比较两个字符串时遇到问题。我是一个完整的初学者。
private static final Pattern PASSWORD_PATTERN =
Pattern.compile("^" +
"(?=.*[0-9])" + //at least 1 digit
//"(?=.*[a-z])" + //at least 1 lower case letter
"(?=.*[A-Z])" + //at least 1 upper case letter
"(?=.*[a-zA-Z])" + //any letter
//"(?=.*[@#$%^&+=])" + //at least 1 special character
"(?=\\S+$)" + //no white spaces
".{6,}" + //at least 4 characters
"$");
else if(!PASSWORD_PATTERN.matcher(password).matches())
{
Toast.makeText(SignUpActivity.this, "Passwords must have at least 1 Uppercase letter, Digit, No spaces and at least 6 Characters.", Toast.LENGTH_LONG).show();
}
您可以查看下面提到的代码,以使用正则表达式验证密码。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PasswordValidator{
private Pattern pattern;
private Matcher matcher;
private static final String PASSWORD_PATTERN =
"((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})";
public PasswordValidator(){
pattern = Pattern.compile(PASSWORD_PATTERN);
}
/**
* Validate password with regular expression
* @param password password for validation
* @return true valid password, false invalid password
*/
public boolean validate(final String password){
matcher = pattern.matcher(password);
return matcher.matches();
}
}
描述:
(#组开始
(?=.*\d) # must contains one digit from 0-9
(?=.*[a-z]) # must contains one lowercase characters
(?=.*[A-Z]) # must contains one uppercase characters
(?=.*[@#$%]) # must contains one special symbols in the list ` "@#$%"`
`.` # match anything with previous condition checking
{6,20} # length at least 6 characters and maximum of 20
)# End of group
密码正则表达式模式
((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})
[整体组合是指6到20个字符的字符串,至少包含一个数字,一个大写字母,一个小写字母和一个特殊符号(“@#$%”
)。这种正则表达式模式对于实现强大而复杂的密码非常有用。
P.S分组公式的顺序无关紧要。