验证具有最小长度和白名单字符的密码

发布于 2024-12-25 14:06:30 字数 1470 浏览 2 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怀念你的温柔 2025-01-01 14:06:30

基本上你在这里错过了一个开放的 [ 字符组括号:

              ↓
 preg_match('([A-za-z0-9-_!@#$%^&*()]{8,})', $password)

你还应该使用 分隔符。括号的行为如下,但最好使用不同的对来避免捕获组的歧义:

 preg_match('/^([A-za-z0-9-_!@#$%^&*()]{8,})$/', $password)

这还添加了开始 ^ 和结束 $ 断言以匹配整个细绳。

Basically you miss an opening [ character group bracket here:

              ↓
 preg_match('([A-za-z0-9-_!@#$%^&*()]{8,})', $password)

And you should also use delimiters. The parens will behave as such, but it's better to use a different pair to avoid ambiguity with a capture group:

 preg_match('/^([A-za-z0-9-_!@#$%^&*()]{8,})$/', $password)

This also adds start ^ and end $ assertions to match the whole string.

混浊又暗下来 2025-01-01 14:06:30

这可能更容易打破个人规则。即,一条规则检查密码是否至少有 8 个字符长,另一条规则检查大写字母,另一条规则检查小写字母,等等。

此外,看起来您在正则表达式方面有一些特殊字符而没有任何转义。例如,除某些特殊情况外,* 字符在正则表达式中具有特殊含义。它需要转义 \* 或放在方括号 [*]

This may be easier to break into individual rules. I.e. a rule to check if the password is at least 8 characters long, another to check for an uppercase, another for lowercase, etc.

Also, it looks like you have some special characters in terms of regular expressions without any escaping. For example, the * character has special meaning in regular expressions other than some special cases. It either needs to be escaped \* or in brackets [*]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文