15位身份证转18位

 //15位转18位
    function C15ToC18(c15) {

        var cId;

        if (c15.length == 15) {

            pattern = /^\d{15}$/;

            if (pattern.exec(c15) == null) {

                //   alert("15位身份证号码必须为数字!")

                return;

            }

            if (!isdate("19" + c15.substring(6, 8), c15.substring(8, 10), c15.substring(10, 12))) {

                //alert("身份证号码中所含日期不正确")

                return;

            }

            cId = c15.substring(0, 6) + "19" + c15.substring(6, 15);
            console.log(cId)
            var strJiaoYan = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];

            var intQuan = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];

            var intTemp = 0;

            for (i = 0; i < cId.length; i++)

                intTemp += cId[i]* intQuan[i];

            console.log(intTemp)
            intTemp %= 11;
            cId += strJiaoYan[intTemp];

            return cId;

        }

        return;

    }

    //检查年月日是否是合法日期
    function isdate(intYear, intMonth, intDay) {

        if (isNaN(intYear) || isNaN(intMonth) || isNaN(intDay)) return false;

        if (intMonth > 12 || intMonth < 1) return false;

        if (intDay < 1 || intDay > 31) return false;

        if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intDay > 30)) return false;

        if (intMonth == 2) {

            if (intDay > 29) return false;

            if ((((intYear % 100 == 0) && (intYear % 400 != 0)) || (intYear % 4 != 0)) && (intDay > 28)) return false;

        }

        return true;
    }

 

posted @ 2022-02-15 11:11  敲键盘的喵~  阅读(624)  评论(0编辑  收藏  举报