asp正则验证是否汉字的三种Pattern的区别
作者:admin 日期:2012-04-05
asp正则验证汉字以下三种都可以使用,它们之间的区别在哪儿?
1 "^[^\u0000-\u00FF]*$"
2 "^[\u0391-\uFFE5]+$"
3 "^([\u4e00-\u9fa5]+$)
用 \u****在正则里就表示一个unicode编码(通常用0x****的形式表示),而你提出的三种正则,区别就是范围的大小:
1 是指除了\u0000到\u00FF 之外的所有字符,而 0000 - 00FF 就是我们常说的ASCII码及一些补充字符,因而用这个正则来判定是否是中文是很不严谨的,所有的双字节字符都会返回真,比如日文。
2 这个编码范围我没有看到过,不过查了查unicode编码表,似乎没有特别的说明。不过单从范围上来说,它所包含的区间恰好涵盖了 3 里的范围,因而它的范围比单纯验证中文的范围要大,所以可以验证通过,但也包含了不是中文的部分字符。
3 这个就是我们常用的验证中文的unicode范围(\u4e00-\u9fa5),包含中、日、韩中包含的所有常用汉字,因而用这个区间来验证汉字是最准确的:
P.S. 另外还有一种中文的范围的说法是 4E00-9FBF,而这个是指CJK统一表意符号 (CJK Unified Ideographs),它是unicode里划分的一个区间块,也是最接近纯中文的范围,仅次于 3 的范围。CJK当然就是指 Chinese, Japanese和Korea。
广告位