当前位置: 首页 > news >正文

身份证,港澳通行证,台胞证,记一下三个常用的正则判断

正则判断

// 身份证校验
export function checkIdCard(value: string) {console.log('checkIdCard', value);if (!value) return false;const ID = value.toUpperCase();if (/^[1-9][*]{16}[0-9x]$/i.test(ID)) {return true;}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 birthday = `${ID.substr(6, 4)}/${Number(ID.substr(10, 2))}/${Number(ID.substr(12, 2))}`;const d = new Date(birthday);const newBirthday = `${d.getFullYear()}/${Number(d.getMonth() + 1)}/${Number(d.getDate())}`;const currentTime = new Date().getTime();const time = d.getTime();const arrInt = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];const arrCh = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];let sum = 0;let i;if (!/^\d{17}(\d|X)$/i.test(ID)) {return false;}if (city[ID.substr(0, 2)] === undefined) {return false;}if (time >= currentTime || birthday !== newBirthday) {return false;}for (i = 0; i < 17; i++) {sum += ID.substr(i, 1) * arrInt[i];}const residue = arrCh[sum % 11];if (residue !== ID.substr(17, 1)) {return false;}return true;
}export function checkTaiBaoCardId(value: string) {if (!value) return false;// const reg = /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/;const reg = /^[H|M](\d{8}|\d{10})$/;return reg.test(value);
}export function checkHKCardId(value: string) {if (!value) return false;const reg = /^([A-Z]\d{6,10}(\(\w{1}\))?)$/;return reg.test(value);
}

 

解析身份证,判断生日,性别,年龄

// 解析身份证信息
export function parseIdCard(value: string): any {let birthday, sex, age;if (checkIdCard(value)) {birthday = `${value.substring(6, 10)}-${value.substring(10,12)}-${value.substring(12, 14)}`;sex = parseInt(value.substr(16, 1)) % 2 == 1 ? '1' : '2';const myDate = new Date();const month = myDate.getMonth() + 1;const day = myDate.getDate();age = myDate.getFullYear() - value.substring(6, 10) - 1;if (value.substring(10, 12) < month ||(value.substring(10, 12) == month && value.substring(12, 14) <= day)) {age++;}}return { birthday, sex, age };
}

 

http://www.vanclimg.com/news/308.html

相关文章:

  • 接收解析封装H264为PS数据的RTP包
  • Zabbix优化参考1
  • hi
  • 框幅式高光谱文献数据库,换“新”看!科研效率Up Up!
  • vxe-table 实现服务端筛选、分页筛选
  • 函数参数为字符串类型时,默认值设为NULL会报错
  • 中电金信:源启研发协同一体化平台、源启混沌工程平台通过信通院可信云最高级评估
  • LGP9310 [EGTS 2021] Luna likes Love 学习笔记
  • 使用Amazon Q和MCP优化深度学习环境
  • Linux 系统硬盘命名规则详细解析
  • 【LeetCode 160】算法:相交链表 —— 双指针法和数学法
  • cgroup机制
  • ls | tee 1.txt 如何拿到ls的返回值$?
  • 深入浅出:Clang中的控制流完整性(CFI)技术解析
  • 工业互联网甄选联盟会员组织正式成立,合作共赢
  • VK16K33AQ QNF28小体积封装大电流LED驱动电子烟LED屏显方案
  • HelloWorld
  • 颠覆性应用指南:EtherCAT转PROFINET网关的工业场景核爆方案大全
  • 如何将 Markdown格式文章快速发布到微信公众号.240516
  • Maven 镜像配置文件 maven-settings.xml
  • 图论
  • 开源能源管理系统:数字化时代能源安全与效能提升的核心引擎
  • 四.分支语句的简单应用
  • 使用AnythingLLM本地化投喂文件,简单三步快速本地化部署DeepSeek满血版看这篇!.250304
  • 循环for、while
  • 最小斯坦纳树
  • 浏览器跨标签页通信
  • 以太坊开发指南:SendTransaction vs CallContract 的区别与错误处理实践 - 若
  • Ntpdate系统时间同步
  • oracle 自增id