@Pattern注解正则表达式校验逗号分隔字符

只允许通过02或03、04、05 可以有多个,中间逗号隔开。校验规则如下:

02,05,03  = true
40,04  = false
05,04  = true

实现方案

@Pattern正则表达式如下:

\\G(02|03|04|05|,)+

测试代码如下:


@Data
class Bean {


    @Pattern(
            regexp = "\\G(02|03|04|05|,)+",
            // 只有'/n'才被认作一行的中止
            flags = {Pattern.Flag.UNIX_LINES}
    )
    public String text;

    public static void main(String[] args) {
        Bean bean = new Bean();
        bean.setText("02,WX");
        System.out.println(doValidator(bean));
    }

    public static boolean doValidator(Object bean) {
        //参数校验,带有注解的属性校验
        Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
        //验证某个对象,,其实也可以只验证其中的某一个属性的
        Set<ConstraintViolation<Object>> constraintViolations = validator.validate(bean);
        Iterator<ConstraintViolation<Object>> iter = constraintViolations.iterator();
        if (iter.hasNext()) {
            ConstraintViolation<Object> next = iter.next();
            System.out.println(next.getMessage());
            return false;
        }
        return true;
    }

}
更新日期:
作者: qwding, 丁乾文