正则数据效验

 

代码中遇到数据校验,自己封装了一个工具类,记录一下。

枚举类存放正则验证

/**
 * @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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值