前端校验身份证号正则,校验规则省份、年月日,包含15位校验(完整)
//省份对应的代号 ```
const city = {11: '北京',12: '天津',13: '河北',14: '山西',15: '内蒙古',21: '辽宁',22: '吉林',23: '黑龙江 ',31: '上海',32: '江苏',33: '浙江',34: '安徽',35: '福建',36: '江西',37: '山东',41: '河南',42: '湖北 ',43: '湖南',44: '广东',45: '广西',46: '海南',50: '重庆',51: '四川',52: '贵州',53: '云南',54: '西藏 ',61: '陕西',62: '甘肃',63: '青海',64: '宁夏',65: '新疆',71: '台湾',81: '香港',82: '澳门',91: '国外'
};
const regCity = `(${Reflect.ownKeys(city).join('|')})`;
//当前日期
const currentDate = new Date();
const year = String(currentDate.getFullYear()).split('');
const month = String(currentDate.getMonth() + 1).split('');
const day = String(currentDate.getDate()).split('');
//处理小于10的月份和天数
if (month.length < 2) {month.unshift('0');
}
if (day.length < 2) {day.unshift('0');
}
//校验时间月、日
const regDay = `(((0[13578]|1[02])([0-2]\d|3[0-1]))|(02[0-2]\d)|((0[469]|11)([0-2]\d|30)))`;
//校验十五位身份证号
const reg15 = `(^${regCity}\\d{4}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{2}$)`;
//当前月校验
const currentYearMonth = `${month[0]}${month[1]}${day[0]==0? `0[1-${day[1]}]`:`([0-${day[0]-1}][1-9])|(${day[0]}[0-${day[1]}])`}`;
/***当前年其他月份校验*/
//当前月小于十月份校验
const min10Month = `0[1-${month[1] - 1}](0[1-9]|[1-2]\d|3[0-1])`;
//当前月大于等于十月份校验
const max10Month = `(0[1-9](0[1-9]|[1-2]\d|3[0-1]))${month[1]==0? '':`|(1[0-${month[1] - 1}](0[1-9]|[1-2]\d|3[0-1]))`}`;
const currentYearOtherMonth = month[0] == 0? min10Month:max10Month;
/***组装身份证号校验规则*/
//当前年
const currentYear = `${year[0]}${year[1]}${year[2]}${year[3]}`;
//当前年份校验,当前月份是一月份只使用 currentYearMonth 校验月份
const currentYearReg = `(${currentYear}${ month[0] == 0 && month[1] == 1? '(':`(${currentYearOtherMonth}|`}${currentYearMonth}))`;
//其他年份校验
const regMillenniumMinBirthday = `${year[0]}[0-${year[1]}](([0-${year[2] - 1<0? 0:year[2] - 1}]\d)|(${year[2]}[0-${year[3] - 1 < 0? 0:year[3] - 1}]))`;
const otherYearReg = `((([0-${year[0] - 1}]\d{3})|(${regMillenniumMinBirthday}))${regDay})`;
const regBirthday18 = `(${otherYearReg}|${currentYearReg})`;
const reg18 = `(^${regCity}\d{4}${regBirthday18}\d{3}[0-9Xx]$)`;
const reg = new RegExp(`${reg15}|${reg18}`);
前端校验身份证号正则,校验规则省份、年月日,包含15位校验(完整)相关推荐
- 表单校验之---校验姓名/护照正则/台湾往来通行证/校验身份证号/港澳往来通行证正则/军官证正则/检验手机号/校验银行卡号
常用表单校验 1.校验姓名 2.护照正则 3.台湾往来通行证 4.校验身份证号 5.港澳往来通行证正则 6.军官证正则 7.检验手机号 ...
- Java校验身份证号工具类
直接上代码,该util可以校验身份证号,可以获取年龄.性别.出生日期. public class PersonIdCardUtil {/*** 省.直辖市代码表:* 11 : 北京 12 : 天津 1 ...
- Java身份证号脱敏、校验身份证号合法性、根据身份证号获取年龄、根据生日获取年龄
这里写目录 身份证号编码规则 身份证号脱敏 身份证号合法性校验 根据身份证号获取年龄 根据生日日期获取年龄 根据身份证号获取年龄.生日的Map集合 身份证号编码规则 第一.二位表示省(自治区.直辖市. ...
- vue组件中校验身份证号,手机号和邮箱
vue组件中校验身份证号,手机号和邮箱 直接上代码 一.在js文件中添加校验方式和方法 1. 身份证号码校验(说明,这个身份证校验的方式很精确,算法仔细推荐使用) export function id ...
- SQL 校验身份证号格式
调用示例: SELECT dbo.[fn_IDCardChk]('123') /* --------------------------- 校验身份证号是否有效 成功返回1 失败返回0Jacker ...
- MySql 根据身份证号来判别所属省份年龄及性别
一.背景: 新项目要从别的系统迁移用户表信息,老的用户表里的数据有很多不规范的数据,需要通过表里的身份证号获取用户的省份.年龄.性别. 二.获取方式: 1.通过身份证号获取省份. SELECT CAS ...
- .net验证身份证号是否符合规则
验证身份证号是否符合规则,比较实用,错判率我自己测试为0,挺好用的,欢迎大神补充. protected bool checkidcard(string idcard){//验证18位或者17位加大小写 ...
- 使用JS校验身份证号
1. 中国居民身份证号码编码规则 第一.二位表示省(自治区.直辖市.特别行政区),对于地区代码. 第三.四位表示市(地级市.自治州.盟及国家直辖市所属市辖区和县的汇总码).其中,01-20,51-70 ...
- 正则表达式校验身份证号带出出生日期,年龄,性别
身份证号码说明 居民身份证号码,正确.正式的称谓应该是"公民身份号码".根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码 ...
最新文章
- AliCloudDB for redis应用场景之存储最新N条聊天记录
- 神秘AI换脸软件入侵全球社交网络!马斯克秒变文艺复兴贵族
- h5实现手机端等级进度条
- 二分查找--AVL查找树
- css 背景图怎么设置自动填充满_CSS属性设置 -- 背景样式
- JAVA编程相关:eclipse如何导入已有工程
- Mysql 创建表、存储过程、触发器 -Angelo 分享
- MTK 驱动开发(39)--低功耗分析工具
- linux逻辑表达式,循环结构,函数
- 小说题目和章节题目还没想好
- 单片机C51 之(1)简介
- vue 怎么解析xml
- 三星固态sm863,pm863,sm865,sm865a颗粒
- 毕业设计——deepfake假脸检测
- 中国知名科幻网站列表
- Hadoop 推测执行
- IT经理的个人宣言:做一个好男人!
- android 8.0 ps 命令,全网最全adb命令 - osc_8exjk9uk的个人空间 - OSCHINA - 中文开源技术交流社区...
- ISO26262对软件开发的规定
- cf体验服老显示与服务器出现异常,穿越火线体验服出现网络异常