[급]주민등록번호 체크 오류
- 작성자 :
- 하*국
- 작성일 :
- 2020-10-05 16:00:51
- 조회수 :
- 2,848
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
# 원인 및 결과
var birthYear = (value.charAt(7) <= "2") ? "19" : "20";
에서 value 값이 주민등록번호의 '-' 미포함으로 넘어와서 생긴 문제인 것 같습니다. ( 1*****-******* => 1************ )
아래 예제에도 '-' 미포함으로 넘기는 것 같은데 위의 로직에서는 2라는 값을 가져나옵니다.
value.charAt(7) => value.charAt(6) 으로 변경되어야 할 것 같습니다.
참고 부탁드립니다.
********************************************************************************
아래와 같이 전자정부프레임워크 공통을 이용해서 주민등록번호를 체크하고 있는데요.
2월 29일생 주민등록번호를 체크 통과 못하고 있습니다.
빠른 확인 부탁드립니다.
===================================아래================================
// 주민등록번호 체크 (전자정부프레임워크 : http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:validation:add_rules_in_commons_validator)
function checkPSN(value) {
if(!value) { // 값이 없으면 true
return true;
}
var fmt = /^\d{6}[1234]\d{6}$/;
if(!fmt.test(value)){
return false;
}
var birthYear = (value.charAt(7) <= "2") ? "19" : "20";
birthYear += value.substr(0, 2);
var birthMonth = value.substr(2, 2) - 1;
var birthDate = value.substr(4, 2);
var birth = new Date(birthYear, birthMonth, birthDate);
if( birth.getYear() % 100 != value.substr(0, 2) ||
birth.getMonth() != birthMonth ||
birth.getDate() != birthDate) {
return false;
}
var arrDivide = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5];
var checkdigit = 0;
for(var i = 0; i < value.length - 1; i++) {
checkdigit += parseInt(value.charAt(i)) * parseInt(arrDivide[i]);
}
checkdigit = (11 - (checkdigit % 11)) % 10;
if(checkdigit != value.charAt(12)){
return false;
} else {
return true;
}
}
var birthYear = (value.charAt(7) <= "2") ? "19" : "20";
에서 value 값이 주민등록번호의 '-' 미포함으로 넘어와서 생긴 문제인 것 같습니다. ( 1*****-******* => 1************ )
아래 예제에도 '-' 미포함으로 넘기는 것 같은데 위의 로직에서는 2라는 값을 가져나옵니다.
value.charAt(7) => value.charAt(6) 으로 변경되어야 할 것 같습니다.
참고 부탁드립니다.
********************************************************************************
아래와 같이 전자정부프레임워크 공통을 이용해서 주민등록번호를 체크하고 있는데요.
2월 29일생 주민등록번호를 체크 통과 못하고 있습니다.
빠른 확인 부탁드립니다.
===================================아래================================
// 주민등록번호 체크 (전자정부프레임워크 : http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:validation:add_rules_in_commons_validator)
function checkPSN(value) {
if(!value) { // 값이 없으면 true
return true;
}
var fmt = /^\d{6}[1234]\d{6}$/;
if(!fmt.test(value)){
return false;
}
var birthYear = (value.charAt(7) <= "2") ? "19" : "20";
birthYear += value.substr(0, 2);
var birthMonth = value.substr(2, 2) - 1;
var birthDate = value.substr(4, 2);
var birth = new Date(birthYear, birthMonth, birthDate);
if( birth.getYear() % 100 != value.substr(0, 2) ||
birth.getMonth() != birthMonth ||
birth.getDate() != birthDate) {
return false;
}
var arrDivide = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5];
var checkdigit = 0;
for(var i = 0; i < value.length - 1; i++) {
checkdigit += parseInt(value.charAt(i)) * parseInt(arrDivide[i]);
}
checkdigit = (11 - (checkdigit % 11)) % 10;
if(checkdigit != value.charAt(12)){
return false;
} else {
return true;
}
}
A
안녕하세요.
표준프레임워크센터입니다.
먼저 표준프레임워크에 관심을 가져주셔 감사드립니다.
향후 해당 부분을 추가 검토를 거쳐 수정된 버전을 제공하도록 하겠습니다.
감사합니다.
표준프레임워크센터입니다.
먼저 표준프레임워크에 관심을 가져주셔 감사드립니다.
향후 해당 부분을 추가 검토를 거쳐 수정된 버전을 제공하도록 하겠습니다.
감사합니다.