常用知识 - 中文验证

  • 作者:KK

  • 发表日期:2016.10.21


主要是靠/[\x{4e00}-\x{9fa5}]+/u这个表达式进行校验,而且只能对UTF-8的字符生效,测试代码:

$str = 'ab中文c';
if(preg_match('/[\x{4e00}-\x{9fa5}]+/u', $str)){
	echo '有中文';
}

$str = '中文';
if(preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', $str)){
	echo '全都是中文';
}

$str = '陈小花陈大花花';
if(!preg_match('/^[\x{4e00}-\x{9fa5}]{2,6}$/u', $str)){
	echo '请输入2到6个字的姓名';
}

引用解释:

php的正则中[\x4e00-\x9fa5]其实就是字符字符组的概念(这个数值区间表示了UTF8字符的十六进制值的区间),\x{hex}表达一个16进制数 需要注意的是hex可以是1-2位的,也可以是4位的,但是如果是4位的必须加上大括号 同时,如果是大于x{FF}的hex,必须和u修饰符连用,不然会非法出错