正则表达式匹配中文

在实际开发中,偶尔需要用到正则表达式匹配中文


JavaScript用正则来匹配中文时:

百度百科中直接查询“正则表达式”, 可以看到“元字符”的列表,里面有说明\u的用法。(其中\un,匹配n,其中n是一个四个十六进制数字表示的Unicode字符。例如, \u00A9匹配版权符号(©)。)

例1:如下js代码中正则匹配版权符号

var patt1=new RegExp("\u00A9");
a=patt1.test('©');
alert(a);

例2:如下js代码中正则匹配中文


var patt1=new RegExp("[\u4E00-\u9FA5]+");
a=patt1.test('北京');
alert(a);



Php中用正则匹配中文时:

1、查看PHP手册PCRE修饰符,有如下内容:
u (PCRE_UTF8)
此修正符打开一个与 perl 不兼容的附加功能。 模式和目标字符串都被认为是 utf-8 的。 无效的目标字符串会导致 preg_* 函数什么都匹配不到; 无效的模式字符串会导致 E_WARNING 级别的错误。 PHP 5.3.4 后,5字节和6字节的 UTF-8 字符序列被考虑为无效(resp. PCRE 7.3 2007-08-28)。 以前就被认为是无效的 UTF-8。
2、php的正则中, \x{hex},表达一个16进制数, 需要注意的是hex 可以是1-2位的,也可以是4位的,但是如果是4位的必须加上大括号,
3、php中utf8编码下用正则表达式匹配汉子的正确写法是 /^[\x{4e00}-\x{9fa5}]+$/u

例子:uff8字符匹配中文
if(!preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) //UTF-8汉字字母数字下划线正则表达式
 {
  echo "您输入的[".$str."]含有违法字符";
 }
 else
 {
  echo "您输入的[".$str."]完全合法,通过!";
 
 }


Siblime编辑器中用正则匹配中文:
[\x{4e00}-\x{9fa5}]

你可能感兴趣的:(正则表达式)