Copy the following code to the project, directly call the checkIdcard method, pass the ID number, and if you return "Verification Passed!" It means that the ID number is legal.
function checkIdcard(idcard) {
var Errors = new Array(
"verification passed! ",
" the number of ID card numbers is wrong! ",
" The date of birth of the ID card number is out of range or contains illegal characters! ",
" ID number verification error! ",
" ID card area is illegal! "
);
var area = { 11: " Beijing ", 12: " Tianjin ", 13: " Hebei ", 14: " Shanxi ", 15: " Inner Mongolia ", 21: " Liaoning ", 22: " Jilin ", 23: " Heilongjiang ", 31: " Shanghai ", 32: " Jiangsu ", 33: " Zhejiang ", 34: " Anhui ", 35: " Fujian ", 36: " Jiangxi ", 37: " Shandong ", 41: " Henan ", 42: " Hubei ", 43: " Hunan ", 44: " Guangdong ", 45: " Guangxi ", 46: " Hainan ", 50: " Chongqing ", 51: " Sichuan ", 52: " Guizhou ", 53: " Yunnan ", 54: " Tibet ", 61: " Shaanxi ", 62: " Gansu ", 63: " Qinghai ", 64: " Ningxia ", 65: " Xinjiang ", 71: " Taiwan ", 81: " Hong Kong ", 82: " Macau ", 91: " Foreign " }
var retflag = false;
var idcard, Y, JYM;
var S, M;
var idcard_array = new Array();
idcard_array = idcard.split(" ");
// regional inspection
if (area[parseInt(idcard.substr(0, 2))] = = null) return errors [4];
//identity number and format check
switch (idcard.length) {
case 15:
if ((parseInt(idcard.substr (6,2)) +1900) % 4 = = 0 | | ((parseInt(idcard.substr (6,2)) +1900) %
100 = = 0 & (parseInt(idcard.substr(6, 2)) +1900) % 4 = = 0) {
ereg = /^[1-9][0-9]{5}[0-9]{2}((01 | 03 | 05 | 07 | 08 | 10 | 12)(0[1-9]|[1-2][0-9]| 3[0-1])|(04 | 06 | 09 | 11)(0[1-9]|[1-2][0-9]| 30)| 02(0[1-9]|[1-2][0-9])[0-9]{3}$/;// Test the legality
of the date of birth} else {
ereg = /^[1-9][0-9]{5}[0-9]{2}((01 | 03 | 05 | 07 | 08 | 10 | 12)(0[1-9]|[1-2][0-9]| 3[0-1])|(04 | 06 | 09 | 11)(0[1-9]|[1-2][0-9]| 30)| 02(0[1-9]| 1[0-9]| 2[0-8]))[0-9]{3}$/;// Test the legality of the date of birth
}
if (ereg.test(idcard))
return Errors[0];
else {
return Errors[2];
}
break;
case 18:
// 18-digit identification number detection
// The legality check of the date of birth
// Leap year, month, day:((01 | 03 | 05 | 07 | 08 | 10 | 12)(0[1-9]|[1-2][0-9]| 3[0-1])|(04 | 06 | 09 | 11)(0[1-9]|[1-2][0-9]| 30)| 02(0[1-9]|[1-2][0-9])))
// Year, month and day:((01 | 03 | 05 | 07 | 08 | 10 | 12)(0[1-9]|[1-2][0-9]| 3[0-1])|(04 | 06 | 09 | 11)(0[1-9]|[1-2][0-9]| 30)| 02(0[1-9]| 1[0-9]| 2[0-8]))
if (parseInt(idcard.substr(6, 4) ) % 4 = = 0 | | (parseInt(idcard.substr (6,4)) % 100 = = 0 & &
parseInt(idcard.substr(6, 4)) % 4 = = 0) {
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01 | 03 | 05 | 07 | 08 | 10 | 12)(0[1-9]|[1-2][0-9]| 3[0-1])|(04 | 06 | 09 | 11)(0[1-9]|[1-2][0-9]| 30)| 02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;// Regular expression
for legality of birth date in leap year} else {
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01 | 03 | 05 | 07 | 08 | 10 | 12)(0[1-9]|[1-2][0-9]| 3[0-1])|(04 | 06 | 09 | 11)(0[1-9]|[1-2][0-9]| 30)| 02(0[1-9]| 1[0-9]| 2[0-8]))[0-9]{3}[0-9Xx]$/;// Regular expression
for legality of birth date in normal year}
if (ereg.test(idcard)) {// Test the legality
of birth date // Calculate check digit
S = (parseInt(idcard_array[0]) parseInt(idcard_array[10])) * 7
(parseInt(idcard_array[1]) parseInt(idcard_array[11])) * 9
(parseInt(idcard_array[2]) parseInt(idcard_array[12])) * 10
(parseInt(idcard_array[3]) parseInt(idcard_array[13])) * 5
(parseInt(idcard_array[4]) parseInt(idcard_array[14])) * 8
(parseInt(idcard_array[5]) parseInt(idcard_array[15])) * 4
(parseInt(idcard_array[6]) parseInt(idcard_array[16])) * 2
parseInt(idcard_array[7]) * 1
parseInt(idcard_array[8]) * 6
parseInt(idcard_array[9]) * 3;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y, 1);//Judge the check bit
if (M = = idcard_array[17]) return Errors[0]; //Check bit
else return Errors[3] for detecting ID;
}
else return Errors[2];
break;
default:
return Errors[1];
break;
}
}
Original content, reprint please indicate the source: smart tool library