本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

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; }}


阅读全文(11447) | 回复(3) | 编辑 | 精华
 


回复: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 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.359 second(s), page refreshed 144759794 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号