密码校验需求:
1) 密码控制只能输入字母、数字、特殊符号(~!@#$%^&*()_+[]{}|\;:'",./<>?)
2) 长度 6-16 位,必须包括字母、数字、特殊符号中的2种
3) 密码不能包含用户名信息
判断密码是否包含数字:包含返回1,不包含返回0
int i = newPwd.matches(".*\\d+.*") ? 1 : 0;
判断密码是否包含字母:包含返回1,不包含返回0
int j = newPwd.matches(".*[a-zA-Z]+.*") ? 1 : 0;
判断密码是否包含特殊符号(~!@#$%^&*()_+|<>,.?/:;'[]{}\):包含返回1,不包含返回0
int k = newPwd.matches(".*[~!@#$%^&*()_+|<>,.?/:;'\\[\\]{}\"]+.*") ? 1 : 0;
判断密码长度是否在6-16位
int l = newPwd.length();
判断密码中是否包含用户名
boolean contains = newPwd.contains(userId);
if (i + j + k < 2 || l < 6 || l > 16 || contains) {
return Password error;
}