1.entity
实体类增加一个card字段,数据库也要增加。
@ApiModelProperty(value = "身份证号")
@Pattern(regexp ="/^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$/")
private String card;
2.sql语句
<!--查询card-->
<select id="selectByCard" parameterType="string" resultMap="SysUserMap">
select * from sys_user where card=#{card}
</select>
3.service
// 验证身份证号不为空和唯一性
if (Strings.isBlank(sysUser.getCard())) {
return "身份证号不能为空!";
} else {
SysUser sysUser1 = selectByCard(sysUser.getCard());
if (sysUser1 != null) {
return "身份证号已存在";
}
}
4.前端页面
<input type="text" name="card" id="card" lay-verify="required|card" lay-verType="tips" autocomplete="off" placeholder="请输入身份证"
length="18"/>
card: function (value,item) {
var p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
if (!p.test(value)){
return '身份证号不正确,请重新输入';
}
},
总结:
1.身份证号校验
/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
2.前端和后端校验的正则表达式一样,后端可以写在实体类上。
@Pattern(regexp ="/^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$/")
private String card;