页面验证是否是真实有效的身份证号码

  javascript验证输入是否是真实有效的身份证号码

JavaScript代码
  1. /*! 
  2. * Copyright (c) 2011 sxgkwei 
  3. * Author:sxgkwei 
  4. * Email:sxgkwei@gmail.com 
  5. * Date: 2011-11-28 17:10:21 
  6. */  
  7. var isIdCard=(function(){  
  8.     var maxOld = 100;  
  9.     var now = (new Date()).getFullYear();  
  10.       
  11.     //判断18位身份证  
  12.     var is18IdCard = function(idCard){  
  13.           
  14.         var year = parseInt(idCard.substring(6,10),10);  
  15.         if(maxOld+year<now){//证明是鬼魂  
  16.             return false;  
  17.         };  
  18.           
  19.         var idCardReg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$/;  
  20.         if(!idCardReg.test(idCard)){//基本正则  
  21.             return false;  
  22.         };  
  23.           
  24.         var wi=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];//权列表  
  25.         var ex=[1,0,‘x’,9,8,7,6,5,4,3,2];//校验码列表  
  26.         var su=0;  
  27.         for(var i=0,wil=wi.length;i<wil;i++){  
  28.             su+=parseInt(idCard.charAt(i),10)*wi[i];  
  29.         };  
  30.         return idCard.charAt(17).toLowerCase()==ex[su%11];  
  31.     };  
  32.       
  33.     //判断15位身份证  
  34.     var is15IdCard = function(idCard){  
  35.           
  36.         var maxId = 2003-16;//2003年前是15位证,但办证也得最少16岁吧  
  37.         var minId = now-maxOld;  
  38.         var year = parseInt("19"+idCard.substring(6,8),10);  
  39.         if(minId>maxId || year<minId || year>maxId){//证明是鬼魂或者非人类  
  40.             return false;  
  41.         };  
  42.           
  43.         var idCardReg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;  
  44.           
  45.         return  idCardReg.test(idCard);  
  46.     };  
  47.       
  48.     return (function(e){  
  49.         if(e.length==18){  
  50.             return is18IdCard(e);  
  51.         }else if(e.length==15){  
  52.             return is15IdCard(e);  
  53.         }else{  
  54.             alert("莫乱写,我们不是那么好忽悠滴");  
  55.             return false;  
  56.         };  
  57.     });  
  58. })();  
  59.   
  60. isIdCard("410456196511285935");  


发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>