Java 使用注解校验身份证号

来源:互联网 发布:淘宝上氟硝西泮叫什么 编辑:程序博客网 时间:2024/06/06 00:46

身份证号校验注解类

package com.command.util;import static java.lang.annotation.ElementType.CONSTRUCTOR;import static java.lang.annotation.ElementType.FIELD;import static java.lang.annotation.ElementType.METHOD;import static java.lang.annotation.ElementType.PARAMETER;import static java.lang.annotation.RetentionPolicy.RUNTIME;import java.lang.annotation.Documented;import java.lang.annotation.Retention;import java.lang.annotation.Target;import javax.validation.Constraint;import javax.validation.Payload;import javax.validation.ReportAsSingleViolation;import javax.validation.constraints.Null;import javax.validation.constraints.Pattern;import org.hibernate.validator.constraints.CompositionType;import org.hibernate.validator.constraints.ConstraintComposition;import org.hibernate.validator.constraints.Length;/** * 身份证号验证,为空和正确的身份证号都验证通过,<br/> * 身份证长度18位,由17位数字加一位数字或Xx组成 *  */@ConstraintComposition(CompositionType.OR)@Pattern(regexp = "[1-9]\\d{5}(19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\\d|3[0-1])\\d{3}[0-9Xx]")@Null@Length(min = 0, max = 0)@Documented@Constraint(validatedBy = {})@Target({ METHOD, FIELD, CONSTRUCTOR, PARAMETER })@Retention(RUNTIME)@ReportAsSingleViolationpublic @interface Cid {    String message() default "身份证号校验错误";    Class<?>[] groups() default {};    Class<? extends Payload>[] payload() default {};}

使用样例

package com.exchange.command.personal;import com.command.util.Cid;import lombok.Getter;import lombok.Setter;import org.hibernate.validator.constraints.Length;import org.hibernate.validator.constraints.NotEmpty;@Getter@Setterpublic class PersonalReq{    @NotEmpty(message = "姓名不能为空")    @Length(max = 30, min = 2,message = "姓名长度限制2~30字符")    private String name;    //添加身份证号校验注解    @NotEmpty(message = "身份证号不能为空")    @Cid    private String certNo;}
原创粉丝点击