Regex 正则表达式密码强度
我编写了一个正则表达式,它可能用于密码强度验证:Regex 正则表达式密码强度,regex,Regex,我编写了一个正则表达式,它可能用于密码强度验证: /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*\(\)\_])(?=.{6,})^\S*$/ 我的密码标准如下: 至少6个字符 没有空间 至少一位数字 至少有一个大写字母 至少有一个小写字母 至少一个特殊字符:!@$%^&*()_ 这是预期产出: FooBar123! should match foobar123! should not
/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*\(\)\_])(?=.{6,})^\S*$/
我的密码标准如下:
- 至少6个字符
- 没有空间
- 至少一位数字
- 至少有一个大写字母
- 至少有一个小写字母
- 至少一个特殊字符:!@$%^&*()_
FooBar123! should match
foobar123! should not match (no upper-case letter)
FooBar123 should not match (no special character)
F0bar! F0bar! should not match (contains spaces)
Fo0* should not match (too short)
出于某种原因,除了FooBar123!之外,所有测试都通过了。知道为什么会这样吗?谢谢。您可以尝试下面的正则表达式,该条件可以通过此表达式的响应实现
^(?=.[a-z])(?=.[a-z])(?=.[0-9])(?=.[!@\$%\^&*\(\)\\)\)(?=.{6,})^\S*$
您使用什么编程语言?Regex确实不适合进行密码验证——或者至少不适合一次验证,而是一步一步地验证。将其拆分为几个Regex要容易得多,在JS中将其全部塞进一行对我来说变得复杂(除了聪明之外,没有任何理由)。规则是:“没有空格”和“至少一个特殊字符(从您的列表中)“这些都是坏习惯。为什么要在规则中加入这种武断的限制?让用户输入他们想要的任何内容。“特殊字符”可以是
,或}
,或漢
或[!@\$%\^&*\(\)\\\\\\\\\\\]
会伤害眼睛。可以使它成为[!@$%^&*()
。不需要在末尾额外的^
,在开头就已经有了。计数断言可以与非空格组合\S{6,}$
重写为^(?=.[a-z])(?=.[a-z])(?=.[0-9])(?=.[!@.$%^&*())\S{6,}$
。即使如此,你的工作。