`

js身份证号码验证

 
阅读更多

15位或18位身份证号码验证例子:

/** 
 * 身份证15位编码规则:dddddd yymmdd xx p  
 * dddddd:地区码  
 * yymmdd: 出生年月日  
 * xx: 顺序类编码,无法确定  
 * p: 性别,奇数为男,偶数为女 
 * <p /> 
 * 身份证18位编码规则:dddddd yyyymmdd xxx y  
 * dddddd:地区码  
 * yyyymmdd: 出生年月日  
 * xxx:顺序类编码,无法确定,奇数为男,偶数为女  
 * y: 校验码,该位数值可通过前17位计算获得 
 * <p /> 
 * 18位号码加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ] 
 * 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]  
 * 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )  
 * i为身份证号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置 
 *  
 */ 
 
var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];// 加权因子  
var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];// 身份证验证位值.10代表X  
function IdCardValidate(idCard) {  
    idCard = trim(idCard.replace(/ /g, ""));  
    if (idCard.length == 15) {  
        return isValidityBrithBy15IdCard(idCard);  
    } else if (idCard.length == 18) {  
        var a_idCard = idCard.split("");// 得到身份证数组  
        if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){  
            return true;  
        }else {  
            return false;  
        }  
    } else {  
        return false;  
    }  
}  
/** 
 * 判断身份证号码为18位时最后的验证位是否正确 
 * @param a_idCard 身份证号码数组 
 * @return 
 */ 
function isTrueValidateCodeBy18IdCard(a_idCard) {  
    var sum = 0; // 声明加权求和变量  
    if (a_idCard[17].toLowerCase() == 'x') {  
        a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作  
    }  
    for ( var i = 0; i < 17; i++) {  
        sum += Wi[i] * a_idCard[i];// 加权求和  
    }  
    valCodePosition = sum % 11;// 得到验证码所位置  
    if (a_idCard[17] == ValideCode[valCodePosition]) {  
        return true;  
    } else {  
        return false;  
    }  
}  
/** 
 * 通过身份证判断是男是女 
 * @param idCard 15/18位身份证号码  
 * @return 'female'-女、'male'-男 
 */ 
function maleOrFemalByIdCard(idCard){  
    idCard = trim(idCard.replace(/ /g, ""));// 对身份证号码做处理。包括字符间有空格。  
    if(idCard.length==15){  
        if(idCard.substring(14,15)%2==0){  
            return 'female';  
        }else{  
            return 'male';  
        }  
    }else if(idCard.length ==18){  
        if(idCard.substring(14,17)%2==0){  
            return 'female';  
        }else{  
            return 'male';  
        }  
    }else{  
        return null;  
    }  
}  
 /** 
  * 验证18位数身份证号码中的生日是否是有效生日 
  * @param idCard 18位书身份证字符串 
  * @return 
  */ 
function isValidityBrithBy18IdCard(idCard18){  
    var year =  idCard18.substring(6,10);  
    var month = idCard18.substring(10,12);  
    var day = idCard18.substring(12,14);  
    var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));  
    // 这里用getFullYear()获取年份,避免千年虫问题  
    if(temp_date.getFullYear()!=parseFloat(year)  
          ||temp_date.getMonth()!=parseFloat(month)-1  
          ||temp_date.getDate()!=parseFloat(day)){  
            return false;  
    }else{  
        return true;  
    }  
}  
  /** 
   * 验证15位数身份证号码中的生日是否是有效生日 
   * @param idCard15 15位书身份证字符串 
   * @return 
   */ 
  function isValidityBrithBy15IdCard(idCard15){  
      var year =  idCard15.substring(6,8);  
      var month = idCard15.substring(8,10);  
      var day = idCard15.substring(10,12);  
      var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));  
      // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法  
      if(temp_date.getYear()!=parseFloat(year)  
              ||temp_date.getMonth()!=parseFloat(month)-1  
              ||temp_date.getDate()!=parseFloat(day)){  
                return false;  
        }else{  
            return true;  
        }  
  }  
//去掉字符串头尾空格  
function trim(str) {  
    return str.replace(/(^\s*)|(\s*$)/g, "");  
} 

 

 

 

分享到:
评论

相关推荐

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

    在IT行业中,身份证号码...以上就是使用JavaScript进行15位和18位身份证号码验证,尤其是18位带“X”身份证号码验证的详细方法。在处理用户输入时,这样的验证可以帮助我们减少错误数据,提高系统的稳定性和安全性。

    js身份证号码,电话号码验证等脚本

    #### 一、JS 身份证号码验证 身份证号码验证功能在许多场景下都十分重要,例如在线身份验证、用户信息管理等。身份证号码在中国大陆通常有两种格式:15位和18位。18位身份证号码自2004年起正式启用,包含了地区代码...

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

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

    JS/JAVASCRIPT身份证号码验证

    直接调用checkIdcard(idcard)即可idcard为需要验证的身份证号码

    Js验证身份证号码 Demo例子里有完整的Js代码

    身份证号码验证; Demo例子里有完整的Js代码; 末位为X或x都能验证; 老身份证号码15位的也可以验证是否正确; 完整验证新老身份证号码的正确性

    js实现二代身份证号码验证详解

    该JS验证程序利用正则表达式对身份证号码进行格式校验,利用数组模拟映射表对地址码进行验证,并通过计算加权因子和校验码的方式检验身份证号码的正确性。此外,还考虑了15位身份证号码的特殊情况,并提供了转换为18...

    验证身份证号码有效性的js

    本文将深入探讨如何使用JavaScript来验证身份证号码的有效性,并解析相关的验证算法。 首先,中国的身份证号码由18位数字组成,分为三个部分:6位地址码、8位出生日期码和最后4位顺序码与校验码。校验码是根据前17...

    js身份证号码获取性别、出生日期、籍贯省市.zip

    这个压缩包文件“js身份证号码获取性别、出生日期、籍贯省市.zip”包含了一个JavaScript方法,用于从身份证号码中提取这些关键数据。下面我们将详细探讨如何通过身份证号码获取这些信息以及背后的逻辑。 首先,中国...

    最全身份证号码验证JS

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

    18位身份证号码验证代码

    18位身份证号码验证代码,js验证 ,javascript验证18位身份证代码,js验证身份证号码。

    js身份证号码完全验证(精确到每一位)

    JavaScript身份证号码验证是一种常见的前端验证技术,用于确保用户输入的身份证号码符合中国大陆居民身份证的格式和规则。在网页表单中,这样的验证可以提高数据的准确性,减少服务器端的无效处理,提供更好的用户...

    js最权威身份证号码验证

    身份证规则验证 错1个数字都不行 /** * 身份证15位编码规则:dddddd yymmdd xx p * dddddd:地区码 * yymmdd: 出生年月日 * xx: 顺序类编码,无法确定 * p: 性别,奇数为男,偶数为女 * &lt;p /&gt; * ...

    正则表达式 JS 身份证验证

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

    身份证号码号码验证JS

    身份证号码号码验证JS。可以非常严格的对所输入的号码进行验证,特别是有‘X’的,以及二代身份证。

    js身份证号验证

    这个`testCard`函数是用于验证输入的身份证号码是否有效的。函数接受一个参数`papersId`,即待验证的身份证号码字符串。 首先,函数会检查`selectedId`变量,如果它不等于1或2,那么将进行身份证号码的验证。这里`...

    javascript 身份证号码格式验证

    运用javascript进行身份证号码格式验证。

    js 身份证号验证程序

    ### JavaScript 身份证号验证程序详解 #### 一、背景介绍 在现代社会,身份证作为个人身份的重要标识,在各种场景中被广泛应用。因此,对于身份证号码的验证也变得尤为重要。本篇文章将详细介绍一个基于JavaScript...

    js验证身份证号码的有效方法

    ### JS验证身份证号码的有效方法 身份证号码验证是前端开发中常见的功能之一,特别是在涉及用户注册、个人信息填写等场景时尤为重要。下面将详细介绍如何利用JavaScript来验证身份证号码的有效性。 #### 身份证...

    js实现身份证号码验证的简单实例

    以下是根据身份证号码编码规则,使用JS对其进行有效性验证代码 IdCard-Validate.js代码如下: 代码如下:/** * 身份证15位编码规则:dddddd yymmdd xx p * dddddd:地区码 * yymmdd: 出生年月日 * xx: 顺序类编码,...

Global site tag (gtag.js) - Google Analytics