我对正则表达式很陌生,我做了一个研究并有了一点理解 我需要的是符合这些规范的密码
- 任何字母字符(至少一个)
- 任何数字字符(至少一个)
- 没有空格
- 特殊字符(0个或更多)
我得到的是这个
^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)(?!\S)$
匹配 1、2、3 规范但不匹配 4 我在 4 上尝试了不同的东西,但我失败了
谁能帮帮我?
最佳答案
你们很亲近。这似乎可以解决您的问题:
preg_match("/^(?=.*[0-9])(?=.*[a-z])(\S+)$/i", $password)
我做了两个改变。
- 只需使用
i
修饰符(不区分大小写的匹配)来缩短一点。这允许删除 A-Z`。 - 我认为
(?!\S)
在这里并没有真正的帮助。相反,您可以简单地让您的实际匹配仅包含非空格字符(\S+
)。这也将立即允许您的密码中包含特殊字符(实际上是除空格之外的任何字符)。
如果您只想允许特定的一组特殊字符,请将 \S
替换为包含字母、数字和您要允许的所有字符的字符类。顺便说一句,如果你想确保你的密码有一定的最小长度,你可以将 +
更改为 {8,}
例如。
关于php - 使用正则表达式的安全密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12876014/