php正则匹配汉字

php正则匹配汉字:

$reg = '/^[\x{4e00}-\x{9fa5}]+$/u';


而不是

$reg = '/^[\u4e00-\u9fa5]+$/u';


PHP[PCRE]之Unicode

PCRE支持的16进制字符编码转义符有\x00-\xFF,或\x{num},num为任意位16进制数

但并不支持\u0000-\uFFFF这的形式

PCRE运用/u模式去处理UTF-8编码字符,这是PCRE特有的,示例代码

$str = '中123abcd个业上';
$pattern = '/[\x{4E10}-\x{4E2F}\x{4E0A}]/u';
$matchs = array();
$result = preg_match_all($pattern, $str, $matchs);
var_dump($result, $matchs);

输出结果:

array (size=1)
  0 => 
    array (size=4)
      0 => string '中' (length=3)
      1 => string '个' (length=3)
      2 => string '业' (length=3)
      3 => string '上' (length=3)

示例,写一个正则校验昵称是否只包含数字、字母、下划线、汉字

//匹配
$nickname='陈先生123';
if (!preg_match("/^[0-9a-zA-Z _\x{4e00}-\x{9fa5}]+$/u", $nickname)) {
    echo '昵称不应包含特殊字符';
} else {
    echo 'success';
}


文章已完
作者心情:昨夜西风凋碧树,独上高楼,望尽天涯路。
如无特殊说明,文章均为本站原创,转载请注明出处
  • 转载请注明来源:php正则匹配汉字
  • 本文永久链接地址:http://icehill.cn/post/single/info/228.html