通过自定义注解,满足不为空才进行正则校验的需求
import javax.validation.Constraint;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.Payload;
import java.lang.annotation.*;
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = NotNullThenPattern.NotNullThenPatternValidation.class)
@documented
public @interface NotNullThenPattern {
String regex() default "";
String message() default "格式错误";
Class>[] groups() default {};
Class extends Payload>[] payload() default {};
class NotNullThenPatternValidation implements ConstraintValidator {
private String regex;
@Override
public void initialize(NotNullThenPattern constraintAnnotation) {
this.regex = constraintAnnotation.regex();
}
@Override
public boolean isValid(String pattern, ConstraintValidatorContext constraintValidatorContext) {
if (StringUtil.isBlank(pattern)) {
return true;
}
if (regex.matches(pattern)) {
return true;
}
return false;
}
}
}