CakePHP 3.0 - 正则表达式验证

Tab*_*med 6 php regex cakephp cakephp-3.0

我需要根据正则表达式验证输入.

 //Validator
 $validator
            ->notEmpty('sl_no')
            ->add('reg_no', 'validFormat',[
                    'rule' => '/^([ABCD]{2,2}[0-9]{4,4})$/i',
                    'message' => 'Please enter a valid serial number.'
            ]);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

方法/ ^([ABCD] {2,2} [0-9] {4,4})$/i不存在.

此外,与Cake 2文档不同,Cake 3.0验证文档中没有提及正则表达式.

这被移动或修改了吗?

小智 21

试试这个

 $validator
        ->notEmpty('sl_no')
        ->add('reg_no', 'validFormat',[
                'rule' => array('custom', '/^([ABCD]{2,2}[0-9]{4,4})$/i'),
                'message' => 'Please enter a valid serial number.'
        ]);
Run Code Online (Sandbox Code Playgroud)

  • 并解释其原因.在CakePHP 3.0中,您有一个`Validator`对象,它使用[`Validation`类](http://api.cakephp.org/3.0/class-Cake.Validation.Validation.html)中描述的集合作为默认提供程序.从那个类你对[`custom()`方法](http://api.cakephp.org/3.0/class-Cake.Validation.Validation.html#_custom)感兴趣,它用于检查一个字段一个REGEX字符串.因此,当你添加()`它时,需要在`rule`键的值内指定规则名称(`custom`)和参数(你的正则表达式字符串). (3认同)