具体来说,我想匹配范围[#x10000-#xEFFFF]
。 AFAIK,\u
转义序列仅接受4个十六进制数字,而不接受5个。是否有一种方法可以匹配较高的值?
最佳答案
在内部,JavaScript使用UCS-2(仅限于基础平面)。对于更高范围的字符,您将不得不使用代理对。例如,要查找U + 13FFA,可以匹配\uD80F\uDFFA
。
可以在here中找到更多详细信息。
不幸的是,这在正则表达式的字符类中不能很好地工作。使用BMP字符,您可以执行/[a-z]/
之类的操作。您不能使用较大范围的字符来执行此操作,因为JavaScript无法理解应该将代理对视为一个单元。您也许可以寻找处理此问题的第三方库。可悲的是,我不推荐任何人。 This one可能值得一看。我从未使用过它,所以我无法证明它的质量。
附言您可能会发现this shim对于一般处理高阶字符很有用。