我一直在寻找使用JavaScript代理对匹配0x0FFFF范围之外的unicode字符。
This article显示如何匹配它们,所以匹配ascii小写字母或麻将牌红龙(U + 1F004)我可以使用:
/[a-z]|\ud83c\udc04/g
代理序列意味着集合不能全部存在于一个字符类中,那么我怎么能否定它呢?即如何匹配[a-z]
范围内不属于代理对\ud83c\udc04
的任何字符?
我想在替换操作中使用它,就像 -
一样'123'.replace(/[^a-z]/g, '' )
- 会导致空字符串。
答案 0 :(得分:0)
允许范围之外的所有其他序列:
/[\u0000-\u0060\u007B-\uD83B\uD83D-\uDBFF\uE000-FFFF]|\uD83C[\uDC00-\uDC03\uDC05-\uDFFF]/g
较短的替代方案是否定前瞻性。由于IE< 8中的实现错误,它们经常被避免,但是应该适用于这种情况。但是你必须小心不要意外地匹配代理对中的第二个代码单元:
/(?![a-z\uDC00-\uDFFF]|\uD83C\uDC04)./g
或者等待并希望ECMAScript第六版在RegExp中为我们提供星体飞机支持......