JS身份证验证源码

<script language="javascript" type="text/javascript">
        function CheckIdCardField(v_card) {
            var reg = /^\d{15}(\d{2}[0-9X])?$/i;
            if (!reg.test(v_card)) {
                return false;
            }
            if (v_card.length == 15) {
                var n = new Date();
                var y = n.getFullYear();
                if (parseInt("19" + v_card.substr(6, 2)) < 1900 || parseInt("19" + v_card.substr(6, 2)) > y) {
                    return false;
                }
                var birth = "19" + v_card.substr(6, 2) + "-" + v_card.substr(8, 2) + "-" + v_card.substr(10, 2);
                if (!isDate(birth)) {
                    return false;
                }
            }
            if (v_card.length == 18) {
                var n = new Date();
                var y = n.getFullYear();
                if (parseInt(v_card.substr(6, 4)) < 1900 || parseInt(v_card.substr(6, 4)) > y) {
                    return false;
                }
                var birth = v_card.substr(6, 4) + "-" + v_card.substr(10, 2) + "-" + v_card.substr(12, 2);
                if (!isDate(birth)) {
                    return false;
                }
                iW = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);
                iSum = 0;
                for (i = 0; i < 17; i++) {
                    iC = v_card.charAt(i);
                    iVal = parseInt(iC);
                    iSum += iVal * iW[i];
                }
                iJYM = iSum % 11;
                if (iJYM == 0) sJYM = "1";
                else if (iJYM == 1) sJYM = "0";
                else if (iJYM == 2) sJYM = "x";
                else if (iJYM == 3) sJYM = "9";
                else if (iJYM == 4) sJYM = "8";
                else if (iJYM == 5) sJYM = "7";
                else if (iJYM == 6) sJYM = "6";
                else if (iJYM == 7) sJYM = "5";
                else if (iJYM == 8) sJYM = "4";
                else if (iJYM == 9) sJYM = "3";
                else if (iJYM == 10) sJYM = "2";
                var cCheck = v_card.charAt(17).toLowerCase();
                if (cCheck != sJYM) {
                    return false;
                }
            }
            return true;
        }
    </script>
posted @ 2018-03-21 00:40  江上客·无类  阅读(228)  评论(0)    收藏  举报