强密码验证laravel [重复]

Posted

技术标签:

【中文标题】强密码验证laravel [重复]【英文标题】:Strong passwords validation laravel [duplicate] 【发布时间】:2020-07-25 03:38:39 【问题描述】:

所以在任何人关闭它之前,我在这里参考一个答案并提出一个问题

所以我的问题是我想要对 laravel 进行强密码验证,包括 10 个字符、数字、大写小写等等。

我找到了:https://***.com/a/31549892/1270259

问题是,这个正则表达式看起来不对:

/^.*(?=.3,)(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/

由于我不擅长正则表达式,我想我会问如何修复它以使其验证:

长度必须为 10 个字符 必须包含大小写 必须至少包含一个数字 必须至少包含一个特殊字符。

我觉得他们的答案很接近。当它针对 github 操作运行时,返回的错误是 preg_match(): Compilation failed: escape sequence is invalid in character class at offset 46

还有什么想法可以让 Laravel 7 的这项工作与上述约束相匹配?

【问题讨论】:

为什么不针对所有要求使用一个正则表达式,而不是一次验证一个要求。它不仅可以将您的正则表达式简化为您可以理解的内容,还可以让您在失败时回复相关消息,因为您会知道验证的哪一部分失败了。 在仔细检查了您链接的主题后,以 17 个赞成票查看答案,这正是我所指的。 【参考方案1】:

使用对比原理:

^
(?=[^a-z]*[a-z]) # ensure one lower case letter
(?=[^A-Z]*[A-Z]) # ensure one upper case letter
(?=\D*\d)        # ensure a digit
(?=[^!@?]*[!@?]) # special chars
.10,           # at least 10 characters long
$

当然,您可以扩展特殊字符部分。 见a demo on regex101.com

【讨论】:

以上是关于强密码验证laravel [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 更新密码通过验证但不更新记录

jQuery Parsley/Laravel - 密码验证不起作用

Laravel 验证登录表单验证在密码确认中失败?

如何在 Laravel 中验证 bcrypt 密码?

Laravel 密码验证规则有错误

Laravel - 身份验证:尝试无密码