代码中遇到数据校验,自己封装了一个工具类,记录一下。
枚举类存放正则验证
/**
* @author gzy
* @version 1.0
* @date 2021.9.13
* @Description: 正则效验
*/
public enum Regular {
/**
* 手机号
*/
PHONE(1, "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"),
/**
* 邮箱
*/
EMAIL(2, "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"),
/**
* ip
*/
IPV4(3, "[1-9](\\d{1,2})?\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))\\.(0|([1-9](\\d{1,2})?))"),
/**
* 无特殊符号
*/
NO_SPECIAL_SYMBOLS(4, "[^%$&#*<>+]{1,}"),
/**
* 用户名
*/
USERNAME(5, "^[a-z0-9A-Z]{2,20}$"),
/**
* 密码
*/
PASSWORD(6, "^[A-Z][0-9A-Za-z]{0,20}$"),
/**
* 中文
*/
CHINESE(7, "^[\u4e00-\u9fa5],{0,}$"),
/**
* 英文
*/
ENGLISH(8, "^[a-zA-Z]{0,}$"),
/**
* 数字
*/
NUMBER(9, "^[0-9]{1,}$"),
/**
* 数字,英文
*/
NUM_ENG(10, "[a-zA-Z0-9]{0,}$"),
/**
* IPV6
*/
IPV6(11, "^\\\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))(%.+)?\\\\s*$"),
/**
* 数字,符号
*/
NUM_SYMBOL(12, "[0-9-_,.]{0,50}$"),
/**
* 英文,数字,符号
*/
ENG_NUM_SYMBOL(13, "[a-zA-Z0-9-_,.]{0,50}$"),
/**
* 中文,英文
*/
CHA_ENG(14, "[a-zA-Z\u4e00-\u9fa5]{0,50}$"),
/**
* 日期时间yyyy-MM-dd hh:MM:ss
*/
DATE_TIME(15, "^(((20[0-3][0-9]-(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|(20[0-3][0-9]-(0[2469]|11)-(0[1-9]|[12][0-9]|30))) (20|21|22|23|[0-1][0-9]):[0-5][0-9]:[0-5][0-9])$"),
/**
* 身份证
*/
ID_CARD(16, "\"(^\\\\d{18}$)|(^\\\\d{15}$)\""),
/**
* URL
*/
URL(17, "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?"),
/**
* 固定电话
*/
TELEPHONE(18, "\\d{8}"),
/**
* 邮编
*/
POSTCODE(19, "[1-9]\\d{5}"),
/**
* 传真
*/
FAX(20, "^(0\\d{2}-\\d{8}(-\\d{1,4})?)|(0\\d{3}-\\d{7,8}(-\\d{1,4})?)$"),
/**
* 英文,符号
*/
ENG_SYMBOL(21, "[a-zA-Z-_,.]{0,50}$"),
/**
* 日期yyyy-MM-dd
*/
DATE(22, "^\\d{4}\\-(0?[1-9]|1[012])\\-(0?[1-9]|[12][0-9]|3[01])$"),
/**
* double类型
*/
DOUBLE(23, "^(-?\\d+)(\\.\\d+)?$"),
/**
* flag
*/
FLAG(24, "[01]{1}$"),
/**
* 方向
*/
DIRECTION(25, "east|west|south|north|northeast|northwest|southwest|southeast"),
;
private int code;
private String regex;
Regular(int code, String regex) {
this.code = code;
this.regex = regex;
}
public int getCode() {
return code;
}
public String getRegex() {
return regex;
}
/**
* 通过code获取regex
*
* @param code
* @return
*/
public static String getRegexByCode(int code) {
Regular[] regulars = Regular.values();
for (Regular regular : regulars) {
if (regular.getCode() == code) {
return regular.getRegex();
}
}
return "";
}
}
正则效验工具类
/**
* @author gzy
* @version 1.0
* @date 2021.9.13
* @Description: 正则效验
*/
public class RegExp {
private static RegExp instance = null;
/**
* 实例化RegExp
*
* @return RegExp
*/
public static RegExp getInstance() {
if (instance == null) {
instance = new RegExp();
}
return instance;
}
/**
* 正则校验
*
* @param regular 正则
* @param input 输入
* @return boolean
*/
public boolean regExp(String regular, CharSequence input, int limit) {
if (input == null || input == "") {
return false;
}
if (input.length() > limit) {
return false;
}
return Pattern.matches(regular, input);
}
/**
* 正则校验
*
* @param regular 正则
* @param input 输入
* @return boolean
*/
public boolean regExp(String regular, CharSequence input) {
if (input == null || input == "") {
return false;
}
return Pattern.matches(regular, input);
}
}
实战
if (!RegExp.getInstance().regExp(Regular.PHONE.getRegex(), user.getMobile())) {
return ApiResult.fail("请填写正确的手机号");
}
欢迎大家技术交流 邮箱1342217158@qq.com