直接上代码
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {PhoneSerializer.class})
public @interface Phone {
// 默认错误消息
String message() default "手机号格式错误!";
// 分组
Class<?>[] groups() default {};
// 负载
Class<? extends Payload>[] payload() default {};
// 指定多个时使用
@Target({FIELD, METHOD, PARAMETER, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Documented
@interface List {
AssignedValueValue[] value();
}
}
public class PhoneSerializer implements ConstraintValidator<Phone, Object> {
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
if (value!=null){
String string = value.toString();
return Pattern.matches("^1[3-9]\\d{9}$", string);
}
return true;
}
}