내국인, 외국인 주민등록 검사 스크립트
이름과 매칭이 되는건 아니지만
알고리즘 상으로 유효한 주민등록 번호 인지 검사하는 코드다
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;
}
'Development > JavaScript' 카테고리의 다른 글
[Tip] 자바스크립트의 부동 소수점 문제 (0) | 2013.05.03 |
---|---|
[Tip] 스크립트 폼 엔터 서브밋 (0) | 2013.05.03 |
[자바스크립트 완벽 가이드 정리] 표현식과 연산 (0) | 2013.05.03 |
[자바스크립트 완벽 가이드 정리] 타입, 값 , 변수 (0) | 2013.05.03 |
[자바스크립트 완벽 가이드 정리] 어휘구조 (0) | 2013.05.03 |