如何使用正则expression式匹配高价值的Unicode字符?
具体来说,我想匹配范围[#x10000-#xEFFFF]
。 AFAIK, \u
转义序列只接受4个hex数字,而不是5。有没有办法匹配更高的值?
JavaScript在内部使用UCS-2,它仅限于基础平面。 对于更高范围的字符,您将不得不使用代理对。 例如,要findU + 13FFA,可以匹配\uD80F\uDFFA
。
更多细节可以在这里find。
不幸的是,这在正则expression式的字符类中不起作用。 对于BMP字符,可以执行/[az]/
。 你不能用更高范围的字符做,因为JavaScript不理解代理对应该被视为一个单位。 您可能可以search处理此问题的第三方库。 可悲的是,我不知道有什么build议。 这个可能值得一看。 我从来没有用过,所以我不能certificate它的质量。
PS你可能会发现这个垫片通常用于处理高阶字符。
也许这样?
var regex = /#x[1-9a-eA-E][0-9a-fA-F]{4}/g; console.log(regex.test("#x03FFA")); // false console.log(regex.test("#x13FFA")); // true
MZ