正则判断
// 身份证校验 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 }; }