`
huang552
  • 浏览: 102563 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

身份证验证js

阅读更多
//身份证验证
function checkIdcard(idcard1){
   var idcard=idcard1;//document.forms[0].elements[idcard1].value;
   var Errors=new Array(
   "验证通过!",
   "身份证号码位数不对!",
   "身份证号码出生日期超出范围或含有非法字符!",
   "身份证号码校验错误!",
   "身份证地区非法!"
   );
   var area={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:"国外"} 
   
   var idcard,Y,JYM;
   var S,M;
   var idcard_array = new Array();
   idcard_array = idcard.split("");
   /*地区检验*/
   if(area[parseInt(idcard.substr(0,2))]==null) 
   {
    alert(Errors[4]); 
    
    return false;
   }
   /*身份号码位数及格式检验*/
   switch(idcard.length){
    case 15:
    if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
     ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
    } else {
     ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
    }
    if(ereg.test(idcard)){
      //alert(Errors[0]+"15"); 
      return true; //15位验证通过
     }
    else {
      alert(Errors[2]);
       return false;
      }
    break;
    
    case 18:
    //18位身份号码检测
    //出生日期的合法性检查 
    //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
    //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
    if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
    ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
    } else {
    ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
    }
    if(ereg.test(idcard)){//测试出生日期的合法性
     //计算校验位
     S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
     + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
     + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
     + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
     + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
     + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
     + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
     + parseInt(idcard_array[7]) * 1 
     + parseInt(idcard_array[8]) * 6
     + parseInt(idcard_array[9]) * 3 ;
     Y = S % 11;
     M = "F";
     JYM = "10X98765432";
     M = JYM.substr(Y,1);/*判断校验位*/
     if(M == idcard_array[17]){
      //alert(Errors[0]+"18"); 
      return true; /*检测ID的校验位false;*/
     }
     else {
      alert(Errors[3]); 
      return false;
     }
    }
    else {
     alert(Errors[2]); 
     return false;
    }
    break;
    
    default:
     alert(Errors[1]); 
     return false;
   }
 }

 

分享到:
评论

相关推荐

    身份证 验证javascript

    身份证 验证javascript

    身份证验证javascript脚本

    根据提供的信息,我们可以总结出以下有关“身份证验证JavaScript脚本”的关键知识点: ### 身份证验证原理 身份证号码在中国通常有两种格式:15位和18位。这两种格式都有其特定的验证规则。 #### 15位身份证号码...

    前端表单身份证验证js文件

    前端表单身份证验证js文件

    最全身份证号码验证JS

    最全身份证号码验证JS包含以下内方面内容: 1、验证身份证的长度及格式 2、验证身份证地区是否正确 3、验证身份证上的出生日期是否正确 4、验证身份证号最后一位是否正确 5、根据身份证号验证性别 以上内容希望对有...

    正则表达式 JS 身份证验证

    ### 正则表达式 JS 身份证验证详解 身份证号码在中国大陆地区具有唯一性,是个人身份的重要标识。为了确保信息安全和个人隐私保护,在很多应用系统中都需要对身份证号码进行合法性和格式性的验证。本文将详细阐述...

    JS 身份证验证程序

    本文将深入探讨如何使用JavaScript进行身份证验证,包括有效性检查和区域信息识别。 身份证验证是确保用户输入的有效身份证号码的关键步骤,这对于很多需要用户身份验证的场景非常重要,如注册、实名认证等。在中国...

    身份证验证JS

    ### 身份证验证JS知识点详解 #### 1. 身份证号码格式 - **15位身份证号**:由15个数字组成,其中前6位表示地区编码,第7到14位表示出生日期(年月日),最后一位是顺序码。 - **18位身份证号**:由18个字符组成,...

    注册身份证验证的js

    用于注册时验证身份证是否正确 可以支持验证真伪 根据验证省份

    身份证号码验证程序 javascript验证的html文件

    这个压缩包中的"身份证验证程序.html"文件是一个使用JavaScript编写的HTML页面,它用于验证输入的身份证号码是否合法。以下是对这个知识点的详细阐述: 1. **HTML(超文本标记语言)**:HTML是构建网页的基础,它...

    从盛大通行证上摘下来的身份证验证js代码.docx

    这篇文档提供的JavaScript代码片段是一个从盛大通行证系统中提取出来的身份证验证功能。这个功能的主要目的是检查输入的身份证号码是否符合中国大陆身份证号码的规则。 首先,让我们详细了解一下这段代码的工作原理...

    js日期验证和身份证验证

    js日期验证和身份证验证 两个函数 身份证验证了生日,性别,位数 支持15和18位的

    javascript身份证号码验证-支持15位和18位带x身份证

    本篇将详细探讨如何使用JavaScript进行15位和18位,特别是18位带有字母“X”的身份证号码的验证。 首先,我们需要理解身份证号码的结构。15位身份证号码由6位地区码、7位出生日期码和2位顺序码组成;18位身份证号码...

    JS身份证验证(最全)

    JS身份证验证(最全),包括15位和18位,算法判断最后一位。我在几个项目中都用的这个,在此共享给大家

    js判断身份证验证函数

    js判断身份证验证函数,这个函数能够判断城市各个地区开头的数字为准。

    身份证验证的js文件 (jquery)

    身份证验证 jquery js validate验证

    身份证验证JavaScript

    比较严格的验证身份证号码。通过JavaScript实现。

Global site tag (gtag.js) - Google Analytics