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块字符以保留字母和数字,然后使用自定义规则删除数字,这样您就接受了人名的输入。