UNPKG

idcard-parse-utils

Version:
2 lines (1 loc) 1.54 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).idCardParse={})}(this,function(e){"use strict";e.checkPsidno=function(e){const t=String(e);if(!/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[X])$)$/.test(t))return!1;if(!{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:"国外"}[Number(t.slice(0,2))])return!1;if(18!==t.length)return!1;{const e=new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/),n=t.match(e);if(!n)return!1;if(!function(e,t,n){const r=Number(e),i=Number(t),d=Number(n),f=(new Date).getTime();if(new Date(`${r}-${i}-${d}`).getTime()>f)return!1;if((new Date).getFullYear()-r>150)return!1;if(i<1||i>12)return!1;const u=new Date(r,i,0);if(d<1||d>u.getDate())return!1;return!0}(n[2],n[3],n[4]))return!1}if(18===t.length){const e=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],n=["1","0","X","9","8","7","6","5","4","3","2"];let r=0;for(let n=0;n<17;n++)r+=Number(t.charAt(n))*e[n];if(n[r%11]!==t[17])return!1}return!0}});