近期甲方验收项目,各种手段测试层出不穷,用*%&%&%&等特殊字符串在所有输入的地方进行验证,结果就会使页面崩了或者抛出字符串异常,由于正则一直百度,并且所有页面都需要修复感觉很恶心,诸多测试后终于找到适合我且可用的,贴上代码记录
-
自定义工具类对关键部位进行检测
public static String PASSWORD_REGEX = "[\\S]{8,}";
public static String PASSWORD_NUMBER_REGEX = ".*[\\d]+.*";
public static String PASSWORD_CHARACTER_REGEX = ".*[a-zA-Z]+.*";
public static String PASSWORD_SPECIAL_REGEX = ".*[^\\da-zA-Z\\s]+.*";
public static String PASSWORD_CHAR_REGEX = "[`~!@#$%^&*()+=|{}':',\\\\[\\\\].<>/?~!@#¥%……& amp;*()——+|{}【】‘;:”“’。,、?|-]";
//检测中文字符和标点
Pattern p = Pattern.compile("[\u4E00-\u9FA5|\\!|\\,|\\。|\\(|\\)|\\《|\\》|\\“|\\”|\\?|\\:|\\;|\\【|\\】]");
Matcher m = p.matcher(password);
if (m.find()) {
flag = false;
}
/**
* 验证密码是否符合格式
* @param
* @return
*/
public static boolean passwordVerification(String password) {
boolean flag = false;
if (password.matches(PASSWORD_REGEX)) {
int i = 0;
if (password.matches(PASSWORD_NUMBER_REGEX)) {
i++;
}
if (password.matches(PASSWORD_CHARACTER_REGEX)) {
i++;
}
if (password.matches(PASSWORD_SPECIAL_REGEX)) {
i++;
}
if (i > 1) {
flag = true;
}
if(password.matches(PASSWORD_CHAR_REGEX)){
flag = false;
}
}
return flag;
}
public static boolean passwordChar(String password) {
boolean flag = false;
if(!password.matches(PASSWORD_CHAR_REGEX)){
return true;
}
return flag;
}
/**
* 验证密码是否<b>不</b>符合格式
* @param
* @return
*/
public static boolean passwordNotVerification(String password) {
return !passwordVerification(password);
}
public static String escapeExprSpecialWord(String password) {
if (StringUtils.isNotBlank(password)) {
String[] fbsArr = {"\\","&","$", "(", ")", "*", "+", ".", "[", "]", "?", "^", "{", "}", "|"};
for (String key : fbsArr) {
if (password.contains(key)) {
password = password.replace(key, "\\" + key);
}
}
}
return password;
}
以上代码还可以整合,太懒了也懒得搞了