正则表达式密码验证

unl*_*hed 7 java regex

我怎么能得到它所以它会检查字符串中的2位或更多位数?在String上调用匹配项.

s.matches("^[a-zA-Z0-9]{8,}$");
Run Code Online (Sandbox Code Playgroud)

Ste*_*ham 8

这应该做到......

^(?=.*[0-9].*[0-9])[a-zA-Z0-9]{8,}$
Run Code Online (Sandbox Code Playgroud)

我做的唯一改变是添加这(?=.*[0-9].*[0-9])是一个积极的前瞻,将尝试找到密码中的前两位数.如果满足,那么正则表达式将照常进行.

现在,我只是想我会指出你的正则表达式将禁止特殊字符(标点符号等).在实践中,有些人喜欢在他们的密码中输入这样的奇怪字符.

所以你可能会考虑更像这样的东西......

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{8,}$
Run Code Online (Sandbox Code Playgroud)

这将允许特殊字符,同时还确保密码中至少存在一个大写字母,一个小写字母和一个数字.这只是我写了一段时间的强密码正则表达式的一个例子,如果你愿意,你当然可以放松一下这些限制.


Tim*_*Tim 1

匹配两次:

s.matches("^[a-zA-Z0-9]{8,}$");
s.matches("[0-9].*[0-9]");
Run Code Online (Sandbox Code Playgroud)

使用这样的结果:

if ( s.matches("^[a-zA-Z0-9]{8,}$") && s.matches("[0-9].*[0-9]") ) {
    # password is valid
}
Run Code Online (Sandbox Code Playgroud)