当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP中用正则表达式验证中文的问题

PHP
网页常用特效整理:中级篇
网页常用特效整理:高级篇
浅谈PHP语法(2)
浅谈PHP语法(3)
浅谈PHP语法(4)
浅谈PHP语法(5)
浅谈PHP语法(6)
PHP 编码规范-文件结构
PHP 编码规范-文件名
PHP 编码规范-源文件的编码规范
PHP 编码规范-声明
PHP 编码规范-语句
PHP 编码规范-空白
PHP 编码规范-命名规范
PHP 编码规范-编程惯例
PHP 编码规范-代码范例
长沙发上的对话(三)
Winxp下php5,mysql5详细安装教程
Javascript设计网页中的下拉菜单
PHP基础学习笔记

PHP中用正则表达式验证中文的问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 188 ::
收藏到网摘: n/a

str = '中华人民共和国123456789abcdefg';
echo preg_match("/^[\u4e00-\u9fa5_a-zA-Z0-9]{3,15}",strName);

运行一下上面这段代码,看会有什么提示信息?
Warning: preg_match(): Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 3 in F:\wwwroot\php\test.php on line 2

原来,PHP正则表达式中不支持下列 Perl 转义序列:\L, \l, \N, \P, \p, \U, \u, or \X

在 UTF-8 模式下,允许用“\x{...}”,花括号中的内容是表示十六进制数字的字符串。原来的十六进制转义序列 \xhh 如果其值大于 127 的话则匹配了一个双字节 UTF-8 字符。
所以,可以这样来解决preg_match("/^[\x80-\xff_a-zA-Z0-9]{3,15}",strName);