티스토리 뷰
주민번호로 성별과 만나이를 구하는 함수를 간략하게 작성하였습니다.
1. 성별 가져오기
// ssno = 9412201234567 형식
function getGender(ssno) {
// 주민등록번호 형식을 확인하는 정규 표현식
var regex = /^[0-9]{6}(?:0[1-9]|1[0-2])(?:0[1-9]|[1-2][0-9]|3[0-1])[0-9]{6}$|^[0-9]{7}(?:0[1-9]|1[0-2])(?:0[1-9]|[1-2][0-9]|3[0-1])[0-9]{3}$|^[0-9]{13}$/;
// 주민등록번호 형식이 맞는지 확인
if (!regex.test(ssno)) {
console.log('올바른 주민등록번호 형식이 아닙니다.');
return 'E';
}
// 성별 추출
var genderNum = ssno.charAt(6);
var gender = (genderNum % 2 === 1) ? 'M' : 'W';
return gender;
}
- 위 코드에서 정규식은 13자리 주민번호를 체크를 하며 6번째 index, 즉 뒷자리 맨앞번호로 남자(홀수) 또는 여자(짝수)를 추출합니다
2. 만나이 계산하기
// ssno = 9412201234567 형식
function getManAge(ssno) {
// 주민등록번호 형식을 확인하는 정규 표현식
var regex = /^[0-9]{6}(?:0[1-9]|1[0-2])(?:0[1-9]|[1-2][0-9]|3[0-1])[0-9]{6}$|^[0-9]{7}(?:0[1-9]|1[0-2])(?:0[1-9]|[1-2][0-9]|3[0-1])[0-9]{3}$|^[0-9]{13}$/;
// 주민등록번호 형식이 맞는지 확인
if (!regex.test(ssno)) {
console.log('올바른 주민등록번호 형식이 아닙니다.');
return '0';
}
// 생년월일 추출
var birthYear = "";
if(parseInt(ssno.charAt(6), 10) > 2){
birthYear = '20'+ssno.substring(0, 2);
} else {
birthYear = '19'+ssno.substring(0, 2);
}
var birthMonth = parseInt(ssno.substring(ssno.length === 13 ? 2 : 4, ssno.length === 13 ? 4 : 6), 10);
var birthDay = parseInt(ssno.substring(ssno.length === 13 ? 4 : 6, ssno.length === 13 ? 6 : 8), 10);
var today = new Date();
var currentYear = today.getFullYear();
var currentMonth = today.getMonth() + 1;
var currentDay = today.getDate();
var age = currentYear - parseInt(birthYear, 10);
if (currentMonth < birthMonth || (currentMonth === birthMonth && currentDay < birthDay)) {
age--;
}
return age;
}
- 마찬가지로 13자리 주민번호 체크를 하고 주민번호 뒷자리 맨 앞 숫자를 통해 2000년대 ,1900년대를 분류하고 오늘 날짜와 생년월일을 비교하여 만나이를 계산합니다.
감사합니다.
'프로그래밍 언어 > Javascript' 카테고리의 다른 글
[Javascript] 간단하게 URL로 PDF파일 다운받기 (1) | 2024.07.12 |
---|---|
[Javascript] Table 태그 정렬하기 (0) | 2024.07.08 |
[Javascript] 이미지 터치 슬라이드 기능 구현하기 (0) | 2024.06.28 |
[Javascript] img 태그 파일 확장자 변경하기 (0) | 2024.06.26 |
[Javascript] 자식창에서 Modal 창닫기 (0) | 2024.06.18 |
최근에 올라온 글
- Total
- Today
- Yesterday