强密码验证 laravel

Strong passwords validation laravel

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

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

我找到了:

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

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

而且由于我不擅长使用正则表达式,所以我想问一下如何修复它以使其有效:

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

还有什么想法可以让 Laravel 7 符合上述限制吗?

运用对比原则:

^
(?=[^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