zoukankan      html  css  js  c++  java
  • 身份证真实性校验js、mini ui身份证长度正则验证

    身份证号码真实性校验

    <input type="text" value="请输入身份证号" id="cards" >
    <button onclick="isIdCardNo(cv)">ok</button>

    <script>


    function $(id){ return document.getElementById(id);}
    var cv;  //获取input框的值
    $('cards').onblur = function(){
    console.log($('cards').value)
    cv = $('cards').value;
    }

    //这个可以验证15位和18位的身份证,并且包含生日和校验位的验证。
    //如果有兴趣,还可以加上身份证所在地的验证,就是前6位有些数字合法有些数字不合法。
    function isIdCardNo(num) {
    num = num.toUpperCase();
    //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
    if (!(/(^d{15}$)|(^d{17}([0-9]|X)$)/.test(num))) {
    alert('输入的身份证号长度不对,或者号码不符合规定! 15位号码应全为数字,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 num;
    }
    }
    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 num;
    }
    }
    return false;
    }
    </script>

    身份证长度简单正则验证(下列在miniui框架下生效)

    function onIDCardsValidation(e) {
    if (e.isValid) {
    var pattern = /(^d{15}$)|(^d{18}$)|(^d{17}(d|X|x)$)/;
    if (e.value.length < 15 || e.value.length > 18 || pattern.test(e.value) == false) {
    e.errorText = "身份证输入不合法";
    e.isValid = false;
    }
    };
    }

  • 相关阅读:
    在WCF中使用Flag Enumerations
    WCF开发教程资源收集
    [转]WCF 4 安全性和 WIF 简介
    Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中]
    Asp.Net Web API 2第十八课——Working with Entity Relations in OData
    Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)
    Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)
    Asp.Net Web API 2第十五课——Model Validation(模型验证)
    函数 生成器 生成器表达式
    函数的进阶
  • 原文地址:https://www.cnblogs.com/code-klaus/p/8426904.html
Copyright © 2011-2022 走看看