举例:340523198001010013这个身份证号的含义:34为安徽省05为马鞍山市23为和县19800101为出生日期(1980年1月1日)001为顺序号(1为单数,代表为男性)3为验证码
北京市(110000BJ)天津市(120000TJ)河北省(130000HE)山西省(140000SX)内蒙古自治区(150000NM)辽宁省(210000LN)吉林省(220000JL)黑龙江省(230000HL)上海市(310000SH)江苏省(320000JS)浙江省(330000ZJ)安徽省(340000AH)福建省(350000FJ)江西省(360000JX)山东省(370000SD)河南省(410000HA)湖北省(420000HB)湖南省(430000HN)广东省(440000GD)广西壮族自治区(450000GX)海南省(460000HI)重庆市(500000CQ)四川省(510000SC)贵州省(520000GZ)云南省(530000YN)西藏自治区(540000XZ)陕西省(610000SN)甘肃省(620000GS)青海省(630000QH)宁夏回族自治区(640000NX)新疆维吾尔自治区(650000XJ)台湾省(710000Tw)香港特别行政区(810000HK)澳门特别行政区(820000Mo)
举例:某男性的身份证号码是340523198001010013。我们要看看这个身份证是不是合法的身份证。
首先我们得出前17位的乘积和:(3*7+4*9+0*10+5*5+2*8+3*4+1*2+9*1+8*6+0*3+0*7+1*9+0*10+1*5+0*8+0*4+1*2)=185然后再求余:185%11=9最后通过对应规则就可以知道余数9对应的数字是3。所以,可以判定这是一个合格的身份证号码。JavaScript校验18位身份证varcity={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:"国外"};varID='340523198001010013';首先校验位数是否是18位:
if(!/^\d{17}(\d|x)$/i.test(ID))returnfalse;//\d匹配数字//^匹配开始//$匹配结尾//i不区分大小写//{17}匹配17次//\d|x匹配数字或x然后校验开头两位是否是合法的省(直辖市/自治区):
if(city[ID.substr(0,2)]===undefined)return"非法地区";//stringObject.substr(start,length)方法可在字符串中抽取从start下标开始的指定数目的字符//访问对象属性时除了可以用点(.)语法外,也可以用中括号([]),用中括号时更灵活然后再校验出生日期是否合法:
varbirthday=ID.substr(6,4)+'/'+Number(ID.substr(10,2))+'/'+Number(ID.substr(12,2));vard=newDate(birthday);varnewBirthday=d.getFullYear()+'/'+Number(d.getMonth()+1)+'/'+Number(d.getDate());varcurrentTime=newDate().getTime();vartime=d.getTime();if(time>=currentTime||birthday!==newBirthday)return'非法生日';//获取身份证的年月日,然后再new一个Date,再对比这两个日期是否一致//这里用Number()主要是因为身份证的日期是带0的,而newDate()出来的日期是不带0的,Number()之后就都不带0了最后判断校验码是否正确:
vararrInt=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];vararrCh=['1','0','X','9','8','7','6','5','4','3','2'];varsum=0,i,residue;for(i=0;i<17;i++){sum+=ID.substr(i,1)*arrInt[i];}residue=arrCh[sum%11];if(residue!==ID.substr(17,1))'非法证号';如果以上校验都通过了,则是一个合法的身份证号;
?2006-2018深度开源——开源项目,开源代码,开源文档,开源新闻,开源社区杭州精创信息技术有限公司