一、包含大小写字母,数字,特殊字符 且至少出现一次
final String PW_PATTERN = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,}$";
String pw1 = "ABCDEFGHIG";
String pw2 = "abcdefghig";
String pw3 = "0123456789";
String pw4 = "!@#$%^&*()";
String pw5 = "ABCDEabcde";
String pw6 = "ABCDE01234";
String pw7 = "ABCDE!@#$%";
String pw8 = "abcde01234";
String pw9 = "abcde!@#$%";
String pw10 = "01234!@#$%";
String pw11 = "abcde01234!@#$%";
String pw12 = "ABCDE01234!@#$%";
String pw13 = "ABCDEabcde!@#$%";
String pw14 = "ABCDEabcde01234";
String pw15 = "Aa0!";
//符合要求密码
String pw16 = "ABCabc012!@#";
System.out.println(pw1.matches(PW_PATTERN));
System.out.println(pw2.matches(PW_PATTERN));
System.out.println(pw3.matches(PW_PATTERN));
System.out.println(pw4.matches(PW_PATTERN));
System.out.println(pw5.matches(PW_PATTERN));
System.out.println(pw6.matches(PW_PATTERN));
System.out.println(pw7.matches(PW_PATTERN));
System.out.println(pw8.matches(PW_PATTERN));
System.out.println(pw9.matches(PW_PATTERN));
System.out.println(pw10.matches(PW_PATTERN));
System.out.println(pw11.matches(PW_PATTERN));
System.out.println(pw12.matches(PW_PATTERN));
System.out.println(pw13.matches(PW_PATTERN));
System.out.println(pw14.matches(PW_PATTERN));
System.out.println(pw15.matches(PW_PATTERN));
System.out.println(pw16.matches(PW_PATTERN));
二、密码中不允许包含用户名信息
if (newPwd.toLowerCase().contains(user.getLoginName().toLowerCase())){
throw new BusinessException("密码中不允许包含用户名信息");
}
三、密码如果不在指定范围内 错误
if (newPwd.length() < 8 || newPwd.length() > 20) {
throw new BusinessException("密码长度限制8-20");
}
四、密码不允许基于字典或键盘的组合
public static boolean checkPwd(String pwd) {
char[] k = pwd.toCharArray();
int tem = 0;
for (int i = 1; i < k.length; i++) {
if (k[i] == k[i - 1] + 1) {
tem++;
if (tem > 2) {
return false;
}
} else {
tem = 0;
}
}
return true;
}