强密码验证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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章