thinkphp自动验证,写验证规则用正则表达式,会出现问题,求大神解答!~

用此正则就可以验证
protected $_validate = array(
array('Fname', '/^\w{2,}$/' , '用户名格式错误' , 1 , 'regex' ,1),
);
写成这样就不行
array('Fname', '/^[a-z0-9\u4E00-\u9FFF]{2,20}$/' , '用户名格式错误' , 1 ,'regex', 1),
我下面的正则是正确的,在js里面可以生效

正确的写法应写为:

protected $_validate = array(

    array('Fname', '/^[a-z0-9\x{4e00}-\x{9fa5}]{2,20}$/u' , '用户名格式错误' , 1 , 'regex' ,1),

);

错误原因:

    可能与编码有关,固使用模式修正符u:

    u (PCRE_UTF8) 
    此修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式字符串被当成 UTF-8。本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。 

    php匹配中文与js有所区别\x后需加大括号,其中\x表示十六进制数据.

其它原因:

  1.  接收的是GB2312的编码格式,如果是接收GB2312的汉字字母数字请替换上面的正则表达式为array('Fname', "/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/" , '用户名格式错误' , 1 , 'regex' ,1)

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-18
js 的毕竟不是php的正则,/^[\x{4e00}-\x{9fa5}]{2,20}$/u ,你先本地测试下php能匹配不。。不能匹配就是匹配规则错误

thinkphp自动验证,写验证规则用正则表达式,会出现问题,求大神解答!~
1. 接收的是GB2312的编码格式,如果是接收GB2312的汉字字母数字请替换上面的正则表达式为array('Fname', "\/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$\/" , '用户名格式错误' , 1 , 'regex' ,1)

thinkphp6 验证规则
直接使用正则表达式进行验证,支持高级的验证逻辑。`'zip' => '\\d{6}'``'zip' => 'regex:\\d{6}'`正则表达式中使用|符号时,使用数组定义:`'accepted' => ['regex' => ['\/^(yes|on|1)$\/i']]`### 其它验证 其他验证功能包括文件验证、唯一性验证等,确保数据的安全性和一致性。`'...

thinkphp开启自动验证后无法连接数据库
需要验证的表单字段名称,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等。有个别验证规则和字段无关的情况下,验证字段是可以随意设置的,例如expire有效期规则是和表单字段无关的。2.验证规则 要进行验证的规则,需要结合附加规则,如果在使用正则验证的附加规则情况下...

thinkphp中如何自动验证,结束时间在开始之间之后
使用下面的规则:rule = [ 'end_date' => 'after:2016-3-18' \/\/2016-3-18是开始时间];详细的请参考thinkphp5手册-验证-验证规则的章节内容网页链接

PHP常用正则表达式汇总
1、\\w就是匹配字母或数字或下划线或汉字,+则与*差不多,区别是+包括重复0次,而*就可以。=就ushi匹配=号两个斜杠则表示正则表达式的分界。2、正则表达式的限定符有:ThinkPHP的自动验证机制是为了进行表单数据验证,验证可以支持function、callback、confirm、equal、unique和regex,这里要讲的是使用正...

ThinkPHP5之Validate和Validate层的封装
在ThinkPHP5框架中,除了传统的MVC分层思想,还存在着一种更深层次的模块化概念,即Validate层。这个层的主要功能是提供数据验证机制,确保输入数据符合预期的规则,以增强应用的健壮性和安全性。下面,我们将详细探讨如何在项目中引入和封装Validate层,以实现数据验证的自动化和模块化。Validate层的引入,...

超常用的PHP正则表达式收集整理
ThinkPHP的自动验证常用的正则一般我们见的比较多的是设置规则为require、email之类的,其实这些本身也是属于正则表达式验证方式,只是系统内置定义了一些常用的正则表达式而已。关键地方是汉字的表示\\xa0-\\xff。下面是我写的例子程序,调试通过:?phpstr=汉字123456abcdef+-*\/ABCDE!@#$%^&*()结尾。

thinkphp 验证码不显示怎么办
本地服务是什么wamp?还是lamp?以前出现过这种情况吗?没有的话,就是有个服务没有正常启动,把环境去掉重新安一遍试试。还不行就是正则表达式有点问题,或者验证码那个随机数的问题,看看源代码,找找,可以把源代码放到别的机子上测试一下环境。

20个常用的正则表达式
ThinkPHP的自动验证常用的正则 一般我们见的比较多的是设置规则为require、email之类的,其实这些本身也是属于正则表达式验证方式,只是系统内置定义了一些常用的正则表达式而已。关键地方是汉字的表示\\xa0-\\xff。下面是我写的例子程序,调试通过:?php str=汉字123456abcdef+-*\/ABCDE!@#$%^&*()结尾。

前端和php都是要学习什么内容,急急急,求详细解答
一、PHP基础:PHP做为优秀的WEB开发语言,拥有其他语言也无可比拟的优势,支持几乎所有流行的数据库以及操作系统。通过基础部分的学习认真PHP,掌握PHP的基础语法,变量的使用,操作数组方式,PHP常量 ,运算符与表达式的学习,PHP语句结构的使用,时间与日期函数,高效的正则表达式及PHP面向对象的编程思想。二...

相似回答