public String checkPasswordRule(String password) throws UserException{
String need = "";
UserPasswordRuleInfo userPwdRuleInfo = userService.getUserPwdRule();
userPwdRule = new UserPasswordRuleInfoWrapper(userPwdRuleInfo);
String[] complexitys = userPwdRule.getPwd_complexity().split(",");
for (int i = 0; i < complexitys.length; i++) {
need+=doExcute(complexitys[i],password);
}
if(Integer.parseInt(userPwdRule.getPwd_min_lengh()) > password.length()){
need+="密码不能小于"+userPwdRule.getPwd_min_lengh()+"位";
}
return need;
}
private String doExcute(String param, String password) {
String need = "";
String digital = "[0-9]";
String capital = "[A-Z]";
String lowercase ="[a-z]";
String spec="[,.<>{}~!@#$%^&*_]";
if(param.equals("1")){
if(!test(capital,password)){
need+="必须包含大写字母 ";
}
}
if(param.equals("2")){
if(!test(lowercase,password)){
need+="必须包含小写字母 ";
}
}
if(param.equals("3")){
if(!test(spec,password)){
need+="必须包含特殊字符。例如:!@#$%^&* 其中一个或多个 ";
}
}
if(param.equals("4")){
if(!test(digital,password)){
need+="必须包含数字 ";
}
}
return need;
}
private boolean test(String regex,String password) {
boolean flag = false;
Pattern p = Pattern.compile(regex);
Matcher m ;
String str = "";
for (int i = 0; i < password.length(); i++) {
str = String.valueOf(password.charAt(i));
m = p.matcher(str);
if(m.matches()){
flag = true;
break;
}
}
return flag;
}