我查了一下中文字符对应的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汉字字符大全
可以看一下这个PDF,从524页9FA6至526页(最后一页)用旧匹配方式均无法生效。
展开
评论
11