CakePHP 3正则表达式验证

CakePHP 3正则表达式验证,cakephp,Cakephp,我正在尝试在自定义验证规则中使用正则表达式,以允许除数字以外的任何字符,但无法使用 public function validationDefault(Validator $validator) { $validator ->requirePresence('username') ->notEmpty('username', 'A username is required.') -

我正在尝试在自定义验证规则中使用正则表达式,以允许除数字以外的任何字符,但无法使用

public function validationDefault(Validator $validator)
{        
        $validator
            ->requirePresence('username')
            ->notEmpty('username', 'A username is required.')
            ->alphaNumeric('username', 'A username must be alphanumeric.')  
            ->add('username', 'validChars',[
                //'rule' => ['custom', '([0-9])'], // PASSED - Excepts anything but must have a number.
                'rule' => ['custom', '([^0-9])'], // FAILED - Excepts anything but NOT a number.
                'message' => 'Excepts anything except a number.'
            ]) 
            ->requirePresence('password')
            ->notEmpty('password', 'A password is required.');

            return $validator;
}
谢谢你的帮助。
Z.

使用带有匿名函数的自定义验证规则

public function validationDefault(Validator $validator)
{        
    $validator
        ->requirePresence('username')
        ->notEmpty('username', 'A username is required.')
        ->alphaNumeric('username', 'A username must be alphanumeric.')  
        ->add('username', 'validChars',[ 
            'rule' => function ($value, $context) {
                return !preg_match('/[0-9]/', $value); //Return true if no number is present in the value     
            },
            'message' => 'Excepts anything except a number.'
        ]) 
        ->requirePresence('password')
        ->notEmpty('password', 'A password is required.');

        return $validator;
}

使用带有匿名函数的自定义验证规则

public function validationDefault(Validator $validator)
{        
    $validator
        ->requirePresence('username')
        ->notEmpty('username', 'A username is required.')
        ->alphaNumeric('username', 'A username must be alphanumeric.')  
        ->add('username', 'validChars',[ 
            'rule' => function ($value, $context) {
                return !preg_match('/[0-9]/', $value); //Return true if no number is present in the value     
            },
            'message' => 'Excepts anything except a number.'
        ]) 
        ->requirePresence('password')
        ->notEmpty('password', 'A password is required.');

        return $validator;
}

解释例外情况,但不要解释数字。举个例子,我指的是所有unicode块()中不是数字的任何字符。IE:使用字母数字()过滤所有unicode块字符以保留字母和数字,然后使用自定义规则删除数字,您已接受输入人名。解释例外情况,但不包括数字。举个例子,我指的是所有unicode块()中不是数字的任何字符。IE:使用字母数字()过滤所有unicode块字符以保留字母和数字,然后使用自定义规则删除数字,这样您就接受了人名的输入。