//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; }