如何使用正则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 

http://jsbin.com/awidew/1

MZ