JavaScript是否支持正则表达式中超出0xFFFF的Unicode范围?

时间:2015-12-18 16:12:21

标签: javascript regex unicode

This example regular expression^[\u0021-\u003F\u0041-\uFFEF]+@[\u0021-\u003F\u0041-\uFFEF]+\.[\u0021-\u003F\u0041-\uFFEF]+$)可以按Unicode character ranges过滤字符,我可以将范围从\u0000转到\uFFFF,但Unicode支持字符以外的字符0xFFFF。我可以在JavaScript的正则表达式中使用上面的范围吗?

2 个答案:

答案 0 :(得分:1)

为了向后兼容ECMAScript 5和旧环境,不幸的解决方案是使用代理对:

>> '\uD83D\uDCA9'  
'' // U+1F4A9 PILE OF POO  
     

在这种情况下,每个转义代表代理一半的代码点。两个代理半部形成一个星体符号。

链接:https://mathiasbynens.be/notes/javascript-unicode

答案 1 :(得分:1)

ECMAScript6引入了RegExp u标志,以支持更高值的Unicode转义:

(/\u{1F4A9}/u).test(""); // true

不幸的是,截至目前只有MS Edge支持此功能。

参考