Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7594769 建立时间:2006年5月29日 |

| |
[Java代码]Javascript身份证校验(原创) 软件技术
lhwork 发表于 2006/10/16 11:09:35 |
//身份证号码校验,并从中拆分出出生年月日和性别var yyyy;var mm;var dd;var birthday;var sex; function getYear(){ return yyyy;}function getMonth(){ return mm;}function getDate(){ return dd;}function getBirthday(){ return birthday;}function getSex(){ return sex;}function getAge(){ var mm=getMonth(); if (mm<10) mm=mm.substring(1,2); return Math.floor((parseInt(_getYear())*12+parseInt(_getMonth())-parseInt(getYear())*12-parseInt(mm))/12);}//判断是否大龄,男50,女40function isBigAge(){ if (parseInt(getAge())>=40 && parseInt(getSex())==2) return "1"; if (parseInt(getAge())>=50 && parseInt(getSex())==1) return "1"; return "0";}//校验身份证号码function CheckValue(idCard){ var id=idCard; var id_length=id.length; if (id_length==0){ alert("请输入身份证号码!"); return false; } if (id_length!=15 && id_length!=18){ alert("身份证号长度应为15位或18位!"); return false; } if (id_length==15){ yyyy="19"+id.substring(6,8); mm=id.substring(8,10); dd=id.substring(10,12); if (mm>12 || mm<=0){ alert("输入身份证号,月份非法!"); return false; } if (dd>31 || dd<=0){ alert("输入身份证号,日期非法!"); return false; } birthday=yyyy+ "-" +mm+ "-" +dd; if ("13579".indexOf(id.substring(14,15))!=-1){ sex="1"; }else{ sex="2"; } }else if (id_length==18){ if (id.indexOf("X") > 0 && id.indexOf("X")!=17 || id.indexOf("x")>0 && id.indexOf("x")!=17){ alert("身份证中\"X\"输入位置不正确!"); return false; } yyyy=id.substring(6,10); if (yyyy>2200 || yyyy<1900){ alert("输入身份证号,年度非法!"); return false; } mm=id.substring(10,12); if (mm>12 || mm<=0){ alert("输入身份证号,月份非法!"); return false; } dd=id.substring(12,14); if (dd>31 || dd<=0){ alert("输入身份证号,日期非法!"); return false; } if (id.charAt(17)=="x" || id.charAt(17)=="X") { if ("x"!=GetVerifyBit(id) && "X"!=GetVerifyBit(id)){ alert("身份证校验错误,请检查最后一位!"); return false; } }else{ if (id.charAt(17)!=GetVerifyBit(id)){ alert("身份证校验错误,请检查最后一位!"); return false; } } birthday=id.substring(6,10) + "-" + id.substring(10,12) + "-" + id.substring(12,14); if ("13579".indexOf(id.substring(16,17)) > -1){ sex="1"; }else{ sex="2"; } } return true;}//15位转18位中,计算校验位即最后一位function GetVerifyBit(id){ var result;
var
nNum=eval(id.charAt(0)*7+id.charAt(1)*9+id.charAt(2)*10+id.charAt(3)*5+id.charAt(4)*8+id.charAt(5)*4+id.charAt(6)*2+id.charAt(7)*1+id.charAt(8)*6+id.charAt(9)*3+id.charAt(10)*7+id.charAt(11)*9+id.charAt(12)*10+id.charAt(13)*5+id.charAt(14)*8+id.charAt(15)*4+id.charAt(16)*2); nNum=nNum%11; switch (nNum) { case 0 : result="1"; break; case 1 : result="0"; break; case 2 : result="X"; break; case 3 : result="9"; break; case 4 : result="8"; break; case 5 : result="7"; break; case 6 : result="6"; break; case 7 : result="5"; break; case 8 : result="4"; break; case 9 : result="3"; break; case 10 : result="2"; break; } //document.write(result); return result;}//15位转18位function Get18(idCard){ if (CheckValue(idCard)){ var id = idCard; var id18=id; if (id.length==0){ alert("请输入15位身份证号!"); return false; } if (id.length==15){ if (id.substring(6,8)>20){ id18=id.substring(0,6)+"19"+id.substring(6,15); }else{ id18=id.substring(0,6)+"20"+id.substring(6,15); } id18=id18+GetVerifyBit(id18); } return id18; }else{ return false; }} |
|
回复:Javascript身份证校验(原创) 软件技术
lixiang(游客)发表评论于2008/8/11 17:23:59 |
---身份证号码的规则
1、15位身份证号码组成:
ddddddyymmddxxs共15位,其中:
dddddd为6位的地方代码,根据这6位可以获得该身份证号所在地。
yy为2位的年份代码,是身份证持有人的出身年份。
mm为2位的月份代码,是身份证持有人的出身月份。
dd为2位的日期代码,是身份证持有人的出身日。
这6位在一起组成了身份证持有人的出生日期。
xx为2位的顺序码,这个是随机数。
s为1位的性别代码,奇数代表男性,偶数代表女性。
2、18位身份证号码组成:
ddddddyyyymmddxxsp共18位,其中:
其他部分都和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.如果校验位不是,则该身份证号码不正确。 |
|
回复:Javascript身份证校验(原创) 软件技术
段纪彪(游客)发表评论于2007/9/11 12:27:08 |
|
回复:Javascript身份证校验(原创) 软件技术
123(游客)发表评论于2007/8/3 17:40:23 |
|
» 1 »
|