`

JS 身份证号码 正则 验证

 
阅读更多

function isIdCardNo(num) {           
    num = num.toUpperCase();           //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。       
    if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) {    
        alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。');             
        return false;        
    } //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
    //下面分别分析出生日期和校验位
    var len, re; len = num.length; if (len == 15) {
        re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
        var arrSplit = num.match(re);  //检查生日日期是否正确
        var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
        var bGoodDay; bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
        if (!bGoodDay) {        
            alert('输入的身份证号里出生日期不对!');           
            return false;
        } else { //将15位身份证转成18位 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。       
            var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);        
            var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');     
            var nTemp = 0, i;           
            num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);          
            for(i = 0; i < 17; i ++) {                
                nTemp += num.substr(i, 1) * arrInt[i];       
            }
            num += arrCh[nTemp % 11];
            return true;
        }
    }
    if (len == 18) {
        re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
        var arrSplit = num.match(re);  //检查生日日期是否正确
        var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
        var bGoodDay; bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
        if (!bGoodDay) {
            alert(dtmBirth.getYear());
            alert(arrSplit[2]);
            alert('输入的身份证号里出生日期不对!');
            return false;
        }
        else { //检验18位身份证的校验码是否正确。 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
            var valnum;
            var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
            var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
            var nTemp = 0, i;
            for(i = 0; i < 17; i ++) {
                nTemp += num.substr(i, 1) * arrInt[i];
            }
            valnum = arrCh[nTemp % 11];
            if (valnum != num.substr(17, 1)) {
                alert('18位身份证的校验码不正确!应该为:' + valnum);
                return false;
            }
            return true;
        }
    } return false;

}

 

分享到:
评论

相关推荐

    正则表达式 JS 身份证验证

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

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

    在JavaScript中,我们可以使用正则表达式来实现身份证号码的验证。正则表达式是一种强大的文本匹配模式,能够检查一个字符串是否符合特定的格式。对于18位身份证号码,其正则表达式可以如下: ```javascript var ...

    JS input正则验证大全

    本资源包“JS input正则验证大全”主要聚焦于使用JavaScript进行输入框(input)的各种类型的数据验证,包括英文、中文、邮箱、手机号、银行卡和身份证等常见字段的正则校验规则。以下是对这些知识点的详细说明: 1...

    正则表达式校验身份证号码

    本文将详细介绍如何使用正则表达式进行身份证号码的有效性和合理性验证。 #### 简单校验:正则表达式的使用 简单校验主要检查身份证号码是否为15位或18位,并且对于18位号码,最后一位可以是数字或大写“X”。这种...

    JavaScript正则表达式验证身份证号码是否合法(两种方法)分析.docx

    JavaScript正则表达式验证身份证号码是否合法(两种方法)分析 正则表达式(Regular Expression)是一种描述字符模式的对象。下面,我们将通过JavaScript正则表达式来验证身份证号码是否合法。 正则表达式的基本...

    如何用javascript正则表达式验证身份证号码是否合法

    在用户注册页面有些需求要求的比较严格,需要对身份证验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客。此篇文章主要是讲解如何用javascript正则表达式验证身份证号码是否合法,需要的朋友可以参考下

    JS使用正则表达式验证身份证号码

    // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if(reg.test(card) === false) { alert&#40;...

    身份证号,出生日期等的js正则表达式验证

    本文将深入探讨几种常见的JavaScript(简称JS)正则表达式验证方法,以身份证号和出生日期为例,解析其背后的逻辑和技术细节。 #### 身份证号的JS正则表达式验证 身份证号通常有两种格式:15位和18位。15位身份证...

    js正则表达式校验数字、email、身份证号等

    js正则表达式校验数字、email、身份证号等

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

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

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

    身份证号码的验证可以通过编写一个特定的正则表达式来完成,确保输入的号码符合18位数字的格式,并通过校验码的计算进行进一步验证。 5. **JavaScript函数**:程序中可能包含一个或多个函数,如`validateIDCard()`...

    JS_身份证验证(精确的)

    js javascript 身份证验证 正则表达式

    JS 正则验证表单

    **JS正则验证表单**是前端开发中一个至关重要的环节,主要用于确保用户输入的数据符合预设的格式,从而提高数据质量和应用安全性。在本文中,我们将深入探讨JavaScript中的正则表达式及其在表单验证中的应用。 正则...

    身份证正则表达式的js文件和例子

    综上所述,通过身份证正则表达式和相应的校验逻辑,我们可以有效地在JavaScript中验证中国身份证号码的合法性。这在诸如用户注册、个人信息填写等场景中非常关键,能帮助防止错误信息的输入,并确保数据的安全性和...

    JS支持带x身份证号码验证函数

    JavaScript中的身份证号码验证函数是为了确保输入的身份证号码符合中国居民身份证的格式,包括15位和18位的号码,并且能正确处理18位身份证最后一位的校验位(可以是0-9或字母X)。这个特定的`isIdCardNo`函数实现了...

    javascript表单验证 正则表达式验证表单

    比较实用的javascript做的表单验证,验证的表单域包括用户名、密码、密码确认、密码提示问题、邮箱、手机号码、身份证。表单域基本通过获得焦点显示提示信息,失去焦点进行验证,还有提交表单验证。提交表单先进行...

    h5校验身份证号码

    本文将详细介绍如何利用HTML5和JavaScript实现对这两种身份证号码的验证。 #### 二、身份证号码结构分析 在进行验证之前,我们需要了解身份证号码的基本结构: 1. **地址码**(前六位):表示编码对象常住户口所在...

    JS 身份证验证程序

    总结来说,JavaScript身份证验证涉及到正则表达式用于基础格式检查,以及复杂的校验码计算以确保号码的准确性。在实际应用中,这样的验证功能对于提升用户体验和数据安全性至关重要。通过分析和理解shenfenzheng.js...

    JavaScript正则表达式验证身份证号码是否合法(两种方法)

    在了解JavaScript正则表达式验证身份证号码是否合法前,我们首先需要了解身份证号码的基本构成。中国大陆的身份证号码,也就是公民身份号码,由18位数字组成。前六位是地址码,接下来的八位是出生日期码,然后是三位...

    常用正则表达式集锦 js常用正则验证

    - **应用场景**: 用于身份证号码的部分验证、电话号码的某些部分等,例如银行卡号的某一段。 #### 3. 只能输入至少n位数字:“^\d{n,}$” - **含义**: 匹配长度至少为n位的数字串。 - **应用场景**: 验证密码中...

Global site tag (gtag.js) - Google Analytics