utf8编码/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u

php 正则匹配中文 utf8编码/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$

非 Y 不嫁゛ 提交于 2019-12-03 11:53:33
在javascript中,要判断字符串是中文是很简单的。比如: var str = "php编程"; if (/^[\u4e00-\u9fa5]+$/.test(str)) { alert("该字符串全部是中文"); } else { alert("该字符串不全部是中文"); } 想当然的,在php中来判断字符串是否为中文,就会沿袭这个思路: <?php $str = "php编程"; if (preg_match("/^[\u4e00-\u9fa5]+$/",$str)) { print("该字符串全部是中文"); } else { print("该字符串不全部是中文"); } ?> 不过,很快就会发现,php并不支持这样的表达,报错: Warning: preg_match() [function.preg-match]: Compilation failed: PCRE does not support \L, \l, \N, \U, or \u at offset 3 in test.php on line 3 刚开始从google上查了很多次,想从php正则表达式对于十六进制数据的 表达方式上进行突破,发现在php中,是用\x表示十六进制数据的。于是, 变换成如下的代码: $str = "php编程"; if (preg_match("/^[\x4e00-\x9fa5]+