强密码验证 laravel

The*_*ebs 2 php regex phpunit laravel laravel-7

因此,在任何人关闭此功能之前,我将在这里参考答案并提出问题

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

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

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

/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/
Run Code Online (Sandbox Code Playgroud)

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

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

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

我也有任何想法如何让 Laravel 7 工作以匹配上述约束?

Jan*_*Jan 5

使用对比原理:

^
(?=[^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
$
Run Code Online (Sandbox Code Playgroud)

当然,您可以扩展特殊字符部分。在 regex101.com 上
查看演示