我注意到Javascript正则表达式解析中的异常行为。
以下示例说明了此问题。
如果字符“ a”是通过其十六进制表示形式0x61
(以Unicode \u61
表示),则期望使用以下正则表达式进行匹配:
var a = String.fromCharCode(0x61) // "a"
a.match(/^[\u61]$/g) // does not match
不匹配。
奇怪的是,下面的表达式确实匹配:
a.match(/^[\u61-\u61]$/g) // does match!
注意:这可能是Chrome特定的Javascript错误。
答案 0 :(得分:1)
解决方案:
使用四位数 Unicode标识符(包括冗余位)。
a.match(/^[\u0061]$/g) // matches
您还可以使用大括号表示法。如果匹配的5位或更多unicode,则需要大括号。请注意u
标志,该标志启用花括号支持。
a.match(/^[\u{1f601}]$/ug)