我怎么能得到它所以它会检查字符串中的2位或更多位数?在String上调用匹配项.
s.matches("^[a-zA-Z0-9]{8,}$");
Run Code Online (Sandbox Code Playgroud)
这应该做到......
^(?=.*[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)
这将允许特殊字符,同时还确保密码中至少存在一个大写字母,一个小写字母和一个数字.这只是我写了一段时间的强密码正则表达式的一个例子,如果你愿意,你当然可以放松一下这些限制.
匹配两次:
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)