近期甲方驗收項目,各種手段測試層出不窮,用*%&%&%&等特殊字元串在所有輸入的地方進行驗證,結果就會使頁面崩了或者抛出字元串異常,由于正則一直百度,并且所有頁面都需要修複感覺很惡心,諸多測試後終于找到适合我且可用的,貼上代碼記錄
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxia1IjYvJFWldnRtRGawJDW1A3MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxAjM4UzMyATM3EDNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- 自定義工具類對關鍵部位進行檢測
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;
}
以上代碼還可以整合,太懶了也懶得搞了