Home > Article > Web Front-end > js ID card verification super script_form special effects
function checkIdcard(idcard){
var Errors=new Array(
"Verification passed!",
"The number of digits in the ID number is incorrect!",
"The date of birth of the ID number is outside the range or contains Illegal characters!",
"ID card number verification error!",
"Illegal ID card area!"
);
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:"Abroad"}
var idcard,Y,JYM;
var S,M;
var idcard_array = new Array();
idcard_array = idcard.split("");
//Area inspection
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];
alert(Errors[4]);
//ID number digits 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 birth date
} 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 birth date
}
if( ereg.test(idcard)) return Errors[0];
alert(Errors[0]);
else return Errors[2];
alert(Errors[2]);
break;
case 18:
//18-digit identity number detection
//Legality check of date of birth
//Leap 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-2][0-9]))
//Normal 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]$/;//Legacy regular expression for 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 the legality of birth date in ordinary years
}
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 digit
if(M == idcard_array[17]) return Errors[0]; //Detect the ID Check digit
else return Errors[3];
alert(Errors[3]);
}
else return Errors[2];
alert(Errors[2]);
break;
default:
return Errors[1];
alert(Errors[1]);
break;
}
}