본문 바로가기

Development /JavaScript

[Cord] 내, 외국인 주민등록 검사 스크립트

내국인, 외국인 주민등록 검사 스크립트

이름과 매칭이 되는건 아니지만

알고리즘 상으로 유효한 주민등록 번호 인지 검사하는 코드다

ps : 87년 후면 내국인 주민번호 뒷자리중 앞에자릿수가 6, 7 일텐데 87년 후에는 어떻게 바뀌려나..;;

그냥 1, 2 로 돌아가는 건가?? 

function juminCheck(juminNum){

var jumin = juminNum;

var days = 0;

var sum = 0;

var result = 0;

var year_next = jumin.substring(0, 2);

var month = jumin.substring(2,4);

var day = jumin.substring(4,6);

var sex =  jumin.charAt(6);

var year_prev = (sex == "1" || sex == "2") ? "19" : "20";

var year = year_prev + year_next;

 

if(isNaN(juminNum)){

alert("주민번호는 숫자형식입니다.");

return false;

}

 

//주민번호 길이 체크

if(jumin.length != 13){

alert("주민번호 길이가 맞지 않습니다.\n\n다시 확인하시고 입력해 주세요.");

return false;

}

 

//month 적합성 검사

if(month < 1 || month > 12){

alert("유효하지 않는 주민번호입니다.\n\n다시 확인하시고 입력해 주세요.");

//해당필드로 focus();

return false;

}

 

//day 적합성 검사(윤년체크)

 

if(checkDays(month)){

days = 31;

}else{

days = 30;

}

 

//윤년일 경우의 2월의 일수

if(month=="02"){

if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){

days = 29;

}else{

days = 28;

}

}

 

if(day > days){

alert("유효하지 않는 주민번호입니다.\n\n다시 확인하시고 입력해 주세요.");

return false;

}

 

// 성별 체크

if(sex == "1" || sex == "3" || sex == "2" || sex == "4" || sex == "5" || sex == "7" || sex == "6" || sex == "8"){}

else{

alert("유효하지 않는 주민번호입니다.\n\n다시 확인하시고 입력해 주세요.");

return false;

}

 

// 주민등록번호 생성 알고리즘에 의한 유효성 체크

for(i=0; i<12; i++){

sum += jumin.charAt(i) * (i%8+2);

}

 

result = (11 - (sum % 11)) % 10;

result2 = ((11 - (sum % 11)) % 10 + 2) % 10;

 

if ((jumin.charAt(12) != result) && (jumin.charAt(12) != result2)) {                

alert("유효하지 않는 주민번호입니다.\n\n다시 확인하시고 입력해 주세요.");

return false;

}

return true;

}