从Javascript字符串中删除U+10000-U+10FFFF字符

4

尝试使用 string.replace(/\u10000-\u10FFFF/g, ''),但遗憾的是,\u 不支持 10000+ 的字符。

1个回答

8

要指定超出 U+FFFF 的代码点,您需要寻找UTF-16代理对

string.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, '')

供以后参考:当前 ECMAScript 提议 之一是添加 /u 标记以支持 Unicode 补充字符,这将允许:

string.replace(/[\u{10000}-\u{10ffff}]/gu, '')

通过使用“호텔”和一个表情符号进行测试,确认此方法有效。 “호텔”保持不变,表情符号被正确删除。我怀疑这是代理对的问题,但尝试了\uD800\uDC00-\uDBFF\uDFFF后问题得到解决。非常感谢! - Brian Cray
对于其他人寻找帮助,这个代理对计算器将会有所帮助:http://www.russellcottrell.com/greek/utilities/SurrogatePairCalculator.htm - Brian Cray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接