Java String.matches()正则表达式

CQM*_*CQM 0 java regex string

我正在尝试使用matches()函数检查用户输入的密码以查找某些条件

"包含六个字母数字字符,至少一个字母和一个数字"

这是我检查字母数字字符的当前条件

pword.matches("([[a-zA-Z]&&0-9])*")

不幸的是在示例中使用"rrrrZZ1"作为密码,这个条件仍然返回false

什么是正确的正则表达式?谢谢

zie*_*mer 5

这里的其他人可能证明我错了,但如果没有过于复杂的正则表达式,这将很难做到.我只是使用非正则表达式方法.为每个条件设置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)