严格验证身份证号码的js代码,js根据身份证号判断性别

发布时间:2022-11-25

本文目录一览:

  1. 请给一个验证身份证有效性的js代码
  2. 我要一段验证身份证的js加上表单的写法
  3. 如何用javascript正则表达式验证身份证号
  4. js判断身份证号码是否合法有效全国通用
  5. js身份证验证怎么做

请给一个验证身份证有效性的js代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>New Document</title>
    <meta NAME="Generator" CONTENT="EditPlus">
    <meta NAME="Author" CONTENT="">
    <meta NAME="Keywords" CONTENT="">
    <meta NAME="Description" CONTENT="">
</head>
<script LANGUAGE="JavaScript">
    function a(e) {
        var v15 = /^\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d$/;
        var v18 = /^\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d[1-9x]$/;
        if (e.value.length == 15) {
            if (!e.value.match(v15)) {
                alert("15位身份证号码应为数字");
            }
        } else if (e.value.length == 18) {
            if (!e.value.match(v18)) {
                alert("18位身份证号码应为数字,最后一位可为x");
            }
        } else {
            alert("身份证号码应为15或18位");
        }
    }
</script>
<body>
    <input type="text" name="" onblur="a(this)">
</body>
</html>

如果你的重点是验证身份证号码是否正确,你可以到网上找个接口,把号码传过去,整个信息都给你查出来了,何必这么麻烦,你又不是公安局的

我要一段验证身份证的js加上表单的写法

验证身份证的核心函数

function IDCardRegex(v) {
    v = SpaceClear(v);
    if (v.length != 18) {
        return false;
    }
    var numrex = /[0-9xX]/g;
    if (v.replace(numrex, '') != '') {
        return false;
    }
    var address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
    var left2 = v.substr(0, 2);
    if (address.indexOf(left2) < 0) {
        return false;
    }
    var birth = v.substr(6, 8);
    birth = birth.substr(0, 4) + "-" + birth.substr(4, 2) + "-" + birth.substr(6);
    var birthday = new Date(birth);
    if (birthday.getDate().toString() == 'NaN') {
        return false;
    }
    var Wistr = "7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2";
    var Wis = Wistr.split(',');
    var Sums = 0;
    var Sum = 0;
    var c;
    for (var i = 0; i < 17; i++) {
        c = v.substr(i, 1);
        Sum = parseInt(c) * parseInt(Wis[i]);
        Sums += Sum;
    }
    var Y = Sums % 11;
    var T = v.substr(17, 1);
    if (T == 'X') {
        T = 'x';
    }
    var E = '';
    switch (Y) {
        case 0:
            Y = 1;
            break;
        case 1:
            Y = 0;
            break;
        default:
            Y = 12 - Y;
            break;
    }
    E = Y.toString();
    if (Y == 10) {
        E = 'x';
    }
    if (E != T) {
        return false;
    }
    return true;
}

调用函数:

var idcardno = '*****';
if (!IDCardRegex(idcardno)) {
    // alert("身份证号码格式不正确");
}

会返回 truefalse

页面结合代码示例如下:

<input type="text" id="text_idcard" /><span id="span_idcard"></span>
<input type="button" id="btn_ok" value="确定" />

JS代码如下(引用jQuery):

$(function () {
    $("#text_idcard").blur(function () {
        var idcard = $("#text_idcard").val();
        idcard = idcard.replace(/\s+/g, "");
        if (IDCardRegex(idcard)) {
            $("#span_idcard").text("身份证格式正确");
        } else {
            $("#span_idcard").text("身份证格式不正确");
            $("#text_idcard").focus();
        }
    });
    $("#btn_ok").click(function () {
        var idcard = $("#text_idcard").val();
        idcard = idcard.replace(/\s+/g, "");
        if (!IDCardRegex(idcard)) {
            $("#span_idcard").text("身份证格式不正确");
            $("#text_idcard").focus();
            return false;
        }
    });
});
function btn_send() {
    // 把按钮执行事件写在这里
}

上面是手写代码,看LZ对JS不太熟悉,代码就啰嗦了很多。

如何用javascript正则表达式验证身份证号

很简单:

function CheckCardNo(card) {
    var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    if (reg.test(card) === false) {
        alert("身份证输入不合法");
        return false;
    }
}
CheckCardNo('123456778');

js判断身份证号码是否合法有效全国通用

如果要做到全国通用,估计有点问题。毕竟身份证是与个人的信息相互对应的。除非走专业的通道去校验!!如果只是简单判断身份证是否合法有效,可以参考一下身份证号码的构造结构。 首先看看身份证是怎么构造的:

  1. 地区代码:表示出生地,上图为北京市朝阳区
  2. 出生日期:不解释,只要合理就好
  3. 顺序号:最后一位为奇数表示性别男,偶数性别女
  4. 校验位:这是系统验证比较关键的一位,由前面17位通过公式计算得出,具体公式在此不做讨论,因为其结果为数字0~9或者字母X 这些条件都知道了,就可以开始了:
var CardNumber = ""; // 待验证的身份证号码
var iscard = /^\d{17}([0-9]|X)$/;
if (iscard.test(CardNumber)) {
    // 验证身份证的"地区代码(前6位数字,这里需要搜集各个地区的代码...)"
    if (这里校验地区代码) {
        if (这里校验出生日期) {
            // 校验出生日期时,会牵扯到日历算法(计算某年的某月有多少天,防止用户随意输入大于31的日期)
            // 如果判断到这里了,就可以初步确定为"合法有效"的身份证号码了。
            // 因为“校验位”相对而言较复杂。如果楼主有意思。可以百度找资料。
        }
    }
}

js身份证验证怎么做

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=gbk" />
</head>
<body>
    <script type="text/javascript">
        // 身份证号码验证 - 支持新的带x身份证
        function isIdCardNo(num) {
            var factorArr = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
            var error;
            var varArray = new Array();
            var intValue;
            var lngProduct = 0;
            var intCheckDigit;
            var intStrLen = num.length;
            var idNumber = num;
            if ((intStrLen != 15) && (intStrLen != 18)) {
                return false;
            }
            for (i = 0; i < intStrLen; i++) {
                varArray[i] = idNumber.charAt(i);
                if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
                    return false;
                } else if (i < 17) {
                    varArray[i] = varArray[i] * factorArr[i];
                }
            }
            if (intStrLen == 18) {
                var date8 = idNumber.substring(6, 14);
                if (checkDate(date8) == false) {
                    return false;
                }
                for (i = 0; i < 17; i++) {
                    lngProduct = lngProduct + varArray[i];
                }
                intCheckDigit = 12 - lngProduct % 11;
                switch (intCheckDigit) {
                    case 10:
                        intCheckDigit = 'X';
                        break;
                    case 11:
                        intCheckDigit = 0;
                        break;
                    case 12:
                        intCheckDigit = 1;
                        break;
                }
                if (varArray[17].toUpperCase() != intCheckDigit) {
                    return false;
                }
            } else {
                var date6 = idNumber.substring(6, 12);
                if (checkDate(date6) == false) {
                    return false;
                }
            }
            return true;
        }
        function checkDate(date) {
            return true;
        }
        function check() {
            var idnum = document.getElementById('idcard').value;
            alert(isIdCardNo(idnum));
        }
    </script>
    <form id="form1" name="form1" method="post" action="">
        <table align="center" width="60%" border="0">
            <tr>
                <td colspan="3">
                    <table width="100%" border="0">
                        <tr>
                            <td valign="top" align="right">证件号码:</td>
                            <td valign="top">
                                <input type="text" name="idcard" id="idcard" />
                                <input type="submit" name="Submit3" value="验证" onClick="check()" />
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </form>
</body>
</html>