😉ES9里新增的基于Unicode转义的正则匹配可以帮助我们更简单的匹配中文字符。

我查了一下中文字符对应的Unicode Script是Han,于是我们就可以用这个reg来匹配中文:

/\p{Script=Han}/u

这样我们就可以不用记忆繁琐又不好记的/[\u4e00-\u9fa5]/了,况且这个表达式已经有些年头了,说实话,后来又新增的属性为Han的字符并不在这个范围内,因此这个有年头reg并不一定好使。

我随便从网上找了一个Unicode8.0添加的中文字符“𬬭”,我测了一下两种reg的兼容性:
oldReg=/[\u4e00-\u9fa5]/
newReg=/\p{Script=Han}/u

oldReg.test('abc')
// false
newReg.test('abc')
// false

oldReg.test('普通中文')
// true
newReg.test('普通中文')
// true

oldReg.test('𬬭')
// false
newReg.test('𬬭')
// true
以后要使用哪个更显而易见了吧?

另外附上一个Unicode汉字字符大全
www.unicode.org

可以看一下这个PDF,从524页9FA6至526页(最后一页)用旧匹配方式均无法生效。
展开
拓跋zhleven于2018-11-27 11:57发布的图片
评论
评论