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

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

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

我找到了:https://stackoverflow.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 个赞成票查看答案,这正是我所指的。

标签: php regex laravel phpunit laravel-7


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-09
    • 2014-12-19
    • 1970-01-01
    • 2016-04-12
    • 2020-08-16
    • 2012-09-18
    • 2017-07-26
    • 2015-10-10
    相关资源
    最近更新 更多