我正在尝试使用matches()函数检查用户输入的密码以查找某些条件
"包含六个字母数字字符,至少一个字母和一个数字"
这是我检查字母数字字符的当前条件
pword.matches("([[a-zA-Z]&&0-9])*")
不幸的是在示例中使用"rrrrZZ1"作为密码,这个条件仍然返回false
什么是正确的正则表达式?谢谢
这里的其他人可能证明我错了,但如果没有过于复杂的正则表达式,这将很难做到.我只是使用非正则表达式方法.为每个条件设置3个布尔值,遍历字符并在满足每个条件时设置每个布尔值,如果所有3个布尔值不等于true,则验证失败.
你可以使用像这样简单的东西:
public boolean validatePassword(String password){
if(password.length() < 6){
return false;
}
boolean foundLetter = false;
boolean foundNumber = false;
for(int i=0; i < password.length(); i++){
char c = password.charAt(i);
if(Character.isLetter(c)){
foundLetter = true;
}else if(Character.isDigit(c)){
foundNumber = true;
}else{
// Isn't alpha-numeric.
return false;
}
}
return foundLetter && foundNumber;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4076 次 |
| 最近记录: |