为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

身份证验证 js

2018-02-01 8页 doc 25KB 27阅读

用户头像

is_014457

暂无简介

举报
身份证验证 js身份证验证 js 身份证验证 js 2011年04月15日 /** *判断身份证号码格式函数 *公民身份号码是特征组合码, *排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码 */ function isChinaIDCard(StrNo){ StrNo = StrNo.toString(); if(StrNo.length == 15){ if(!isValidDate("19"+StrNo.substr(6,2),StrNo.subst r(8,2),Str...
身份证验证 js
身份证验证 js 身份证验证 js 2011年04月15日 /** *判断身份证号码格式函数 *公民身份号码是特征组合码, *排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码 */ function isChinaIDCard(StrNo){ StrNo = StrNo.toString(); if(StrNo.length == 15){ if(!isValidDate("19"+StrNo.substr(6,2),StrNo.subst r(8,2),StrNo.substr(10,2))){return false;} }else if(StrNo.length == 18){ if (!isValidDate(StrNo.substr(6,4),StrNo.substr(10,2) ,StrNo.substr(12,2 ))){return false;} }else{ alert("输入的身份证号码必须为15位或者18位~"); return false; } if (StrNo.length==18) { var a,b,c if (!isNumber(StrNo.substr(0,17))){alert("身份证号码错误,前 17位不能含有英文字母~");return false;} a=parseInt(StrNo.substr(0,1))*7+parseInt(StrNo.sub str(1,1))*9+parseInt(StrNo.substr(2,1))*10; a=a+parseInt(StrNo.substr(3,1))*5+parseInt(StrNo.s ubstr(4,1))*8+parseInt(StrNo.substr(5,1))*4; a=a+parseInt(StrNo.substr(6,1))*2+parseInt(StrNo.s ubstr(7,1))*1+parseInt(StrNo.substr(8,1))*6; a=a+parseInt(StrNo.substr(9,1))*3+parseInt(StrNo.s ubstr(10,1))*7+parseInt(StrNo.substr(11,1))*9; a=a+parseInt(StrNo.substr(12,1))*10+parseInt(StrNo .substr(13,1))*5+p arseInt(StrNo.substr(14,1))*8; a=a+parseInt(StrNo.substr(15,1))*4+parseInt(StrNo. substr(16,1))*2; b=a%11; if (b==2) //最后一位为校验位 { c=StrNo.substr(17,1).toUpperCase(); //转为大写X } else { c=parseInt(StrNo.substr(17,1)); } switch(b) { case 0: if ( c!=1 ) {alert("身份证好号码校验位错:最后一位应该为:1");return false;}break; case 1: if ( c!=0 ) {alert("身份证好号码校验位错:最后一位应该为:0");return false;}break; case 2: if ( c!="X") {alert("身份证好号码校验位错:最后一位应该为:X");return false;}break; case 3: if ( c!=9 ) {alert("身份证好号码校验位错:最后一位应该为:9");return false;}break; case 4: if ( c!=8 ) {alert("身份证好号码校验位错:最后一位应该为:8");return false;}break; case 5: if ( c!=7 ) {alert("身份证好号码校验位错:最后一位应该为:7");return false;}break; case 6: if ( c!=6 ) {alert("身份证好号码校验位错:最后一位应该为:6");return false;}break; case 7: if ( c!=5 ) {alert("身份证好号码校验位错:最后一位应该为:5");return false;}break; case 8: if ( c!=4 ) {alert("身份证好号码校验位错:最后一位应该为:4");return false;}break; case 9: if ( c!=3 ) {alert("身份证好号码校验位错:最后一位应该为:3");return false;}break; case 10: if ( c!=2 ){alert("身份证好号码校验位错:最后一位应该为:2");return false;} } } else {//15位身份证号 if (!isNumber(StrNo)) {alert("身份证号码错误,前15位不能含有英文字母~");return false;} } return true; } function isValidDate(iY, iM, iD) { if (iY>2200 || iY<1900 || !isNumber(iY)){ alert("输入身份证号,年度"+iY+"非法~"); return false; } if (iM>12 || iM<=0 || !isNumber(iM)){ alert("输入身份证号,月份"+iM+"非法~"); return false; } if (iD>31 || iD<=0 || !isNumber(iD)){ alert("输入身份证号,日期"+iD+"非法~"); return false; } return true; } /** * 验证是不是数字 */ function isNumber(oNum) { if(!oNum) return false; var strP=/^\d+(\.\d+)?$/; if(!strP.test(oNum)) return false; try{ if(parseFloat(oNum)!=oNum) return false; } catch(ex) { return false; } return true; } ---身份证号码的规则
1、15位身份证号码组成:
ddddddyymmddxxs共15位,其中:
dddddd为6位的地方代码,根据这6位可以 获得该身份证号所在地。
yy为2位的年份代码,是身 份证持有人的出身年份。
mm为2位的月份代码,是身 份证持有人的出身月份。
dd为2位的日期代码,是身 份证持有人的出身日。
这6位在一起组成了身份证持 有人的出生日期。
xx为2位的顺序码,这个是随机数。
s为1位的性别代码,奇数代表男性,偶数 代表女性。

2、18位身份证号码组成:
ddddddyyyymmddxxsp共18位,其中: height: 1.3em;
其他部分都和15位的相同。年份代码由原来 的2位升级到4位。最后一位为校验位。
校验规则是:
(1)十七位数字 本体码加权求和公式
S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位 数字的权求和
Ai:表示第i位置上的身份证号码数字值
Wi:表示第i位 置上的加权因子
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)计算模
Y = mod(S, 11)
(3)通 过模得到对应的校验码
Y: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2


也就是说,如果得到余数为1则最后的校验位p应该为对应 如果校验位不是,则该身份证号码不正确。的0.
/
本文档为【身份证验证 js】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索