我目前已经设置了一个用于验证密码的正则表达式:
/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W).{6,}$/
这将检查至少1个大写和小写字符,1个数字,1个特殊字符/非单词字符以及至少6个字符。
我现在要将所有验证规则移植到Respect Validation。我的大多数设置都很好,但是密码验证有困难。
我知道regex
方法:
Validator::regex('/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W).{6,}$/')->setName('Password');
但这会返回如下错误消息:
Password must validate against "/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W).{6,}$/"
我想将方法链接在一起,以便在验证链中设置每个规则。因此,如果您缺少一个数字,它将返回类似“密码必须包含至少1个数字”的信息,如果您缺少一个大写字符,它将返回“密码必须包含至少1个大写字符”,等等。
我认为可以使用allOff
方法来完成此操作,通过该方法,您可以设置单个规则,如果所有内部规则都通过,则这些规则将在全局范围内通过。
作为测试,我试图检测字符串是否包含数字和这样的字母字符:
Validator::allOf(Validator::digit(), Validator::alpha())->setName('Password');
结果:
$password = 'test'; // Password must contain only digits (0-9)
$password = '1234'; // Password must contain only letters (a-z)
$password = 'test1234' // Password must contain only digits (0-9)
现在来看,为什么会出现这些错误是很合理的,但是如果没有regex
方法,我将看不到如何做。这是我想要的,在这种情况下,最好是使用regex
方法,我已经浏览了几次规则列表,但是我可能已经错过了我所追求的方法很多。
感谢您的帮助。