티스토리 뷰

주민번호로 성별과 만나이를 구하는 함수를 간략하게 작성하였습니다.

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년대를 분류하고 오늘 날짜와 생년월일을 비교하여 만나이를 계산합니다.



감사합니다.

최근에 올라온 글
Total
Today
Yesterday