manlty 发表于 2010-12-10 15:49:34

匹配非汉字的正则表达式是什么?

本帖最后由 manlty 于 2010-12-10 15:50 编辑

ru1105| 开盘价|      元|止盈 50|止损 20| 1手|今天已做1次交易=y1109 | 开盘价|      元|止盈 20|止损 10| 5手|今天已做3次交易请正则高手用StringRegExpReplace将字符串中“今天已做1次交易”这部分字符(也就是说前面的|和后面的=号(或者结尾)之间的字符)置空

lpxx 发表于 2010-12-10 16:00:39

刚看到的技巧,分享一下
正则验证汉字有三种,测试了三种都可以使用
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),包含中、日、韩中包含的所有常用汉字,因而用这个区间来验证汉字是最准确的,具体包含的汉字及编码查询可以查看这个网址:http://www.chi2ko.com/tool/CJK.htm。

另外还有一种中文的范围的说法是 4E00-9FBF,而这个是指CJK统一表意符号 (CJK Unified Ideographs),它是unicode里划分的一个区间块,也是最接近纯中文的范围,仅次于 3 的范围。CJK当然就是指 Chinese, Japanese和Korea。

manlty 发表于 2010-12-10 16:13:17

汉字的正则我有了,感谢AFAN版[^\x00-\xff],不过现在我想知道汉字的非集的正则表达

3mile 发表于 2010-12-10 19:26:04

回复 2# lpxx
测试过几次,AU3正则标准好像不支持\uxxxx参数。但好像支持\x{xx}
页: [1]
查看完整版本: 匹配非汉字的正则表达式是什么?