使用尊重验证进行密码验证

时间:2019-01-24 03:18:47

标签: php validation respect-validation

我目前已经设置了一个用于验证密码的正则表达式:

/^(?=.*[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方法,我已经浏览了几次规则列表,但是我可能已经错过了我所追求的方法很多。

感谢您的帮助。

0 个答案:

没有答案