function checkIdcard(idcard){
var Errors=new Array(
"인증이 통과되었습니다!",
"ID 번호의 자릿수가 잘못되었습니다!",
"생년월일입니다. ID 번호가 범위를 벗어났거나 잘못된 문자가 포함되어 있습니다!",
"신분증 번호 확인 오류!",
"잘못된 ID 카드 영역입니다!"
);
var Area={11: "베이징",12:"천진",13:"허베이",14:"산시",15:"내몽골",21:"랴오닝",22:"지린",23:"헤이룽장",31:" Shanghai",32:"Jiangsu", 33:"Zhejiang",34:"Anhui",35:"Fujian",36:"Jiangxi",37:"Shandong",41:"Henan",42:"Hubei" ,43:"후난",44: "광동",45:"광시",46:"하이난",50:"충칭",51:"쓰촨",52:"귀저우",53:"운난",54 :"티베트",61:"산시성",62:"간쑤",63:"칭하이",64:"닝샤",65:"신장",71:"대만",81:"홍콩",82: "마카오",91:"해외"}
var idcard,Y,JYM;
var S,M
var idcard_array = new Array()
idcard.split ("");
//영역 검사
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4]
alert(Errors [4]);
//ID 번호 자리 및 형식 확인
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}$/;//생년월일 적법성 테스트
} 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}$/;//생년월일 적법성 테스트
}
if( ereg.test(idcard)) return Errors[0];
alert(Errors[0])
else return Errors[2]; 2]);
case 18:
//18자리 주민등록번호 감지
//생년월일 적법성 확인
//윤년, 월, 일: ( ((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]))
// 일반 연도, 월, 일: ((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]$/;//윤년의 생년월일에 대한 기존 정규식
} 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]$/;// 평년 생년월일 합법성에 대한 정규식
}
if(ereg.test(idcard)){//합법성 테스트 생년월일
//검사 숫자 계산
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);//검사 숫자를 판단합니다
== idcard_array[17]) return Errors[0]; //ID 확인 숫자 감지
else return Errors[3]
alert(Errors[3])
else return 오류[2];
alert(오류[2]);
기본값:
오류[1] 반환
break ;
}
}