前言
在项目中,前端要对特殊字段做正则验证,后端也要对特殊的字段做正则验证和非空判断,在做正则的时候遇到了很多坑,今天就和大家分享。主要有以下几种方式:
环境
springboot1.5.x
jpa
java8
1.结合注解来正则来校验
正则表达式
package com.test.util;
/**
* 描述:正则表达式格式
*/
public class RegexpProperties {
public static final String MOBILE_PATTERN = "^$|0?(13|14|15|18|17)[0-9]{9}$";//手机号
public static final String EMAIL_PATTERN = "^$|(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w+)+)$";//邮箱
public static final String FAX_PATTERN = "^$|(\\d{3,4}-)?\\d{7,8}$";//传值
public static final String CREDIT_CODE_PATTERN = "^$|[a-zA-Z0-9]{18}$";//社会信用代码
}
实体类
package com.test.entity;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Date;
@Table(name = "company")
@Entity
@Getter
@Setter
@DynamicInsert//新增时空字段不去插入values
@DynamicUpdate//只跟新变化的字段,结合merge方法使用
@JsonInclude(JsonInclude.Include.NON_NULL)
@EntityListeners({
AuditingEntityListener.class})
@JsonIgnoreProperties({
"createDate", "modifyDate"})
public class Company implements BaseEntity{
//BaseEntity 是实现序列化的,这个类我就不放进来了
@Id
@GeneratedValue
private Integer id;
@NotBlank(message = "企业名称不能为空")
private String name;
@NotBlank(message = "社会信用代码不能为空")
@Pattern(regexp = RegexpProperties.CREDIT_CODE_PATTERN, message = "社会信用代码格式有误")
private String creditCode;
private String contactName;
@Pattern(regexp = RegexpProperties.MOBILE_PATTERN, message = "电话格式有误")
private String contactPhone;
@Length(min = 0, max = 50, message = "企业法人长度不得超过50个字符")
private String corporation;
@Pattern(regexp = RegexpProperties.EMAIL_PATTERN, message = "邮箱格式有误")
private String email;
@Pattern(regexp = RegexpProperties.FAX_PATTERN, message = "传真格式有误")
private String fax;
private String address;
@Min(value = 0, message = "占地面积不能小于0")
private Double floorArea;
private Integer attentionLevel;
private Integer industryId;
private String industryName;
private Timestamp establishedDate;
@Min(value = 0, message =