[javascript] 주민등록번호 형식의 유효성을 검사하는 방법은?

주민등록번호는 한국에서 사용되는 개인 식별 번호로, 형식에 맞게 입력되었는지 검사하는 것이 중요합니다. JavaScript를 사용하여 주민등록번호의 유효성을 검사하는 방법을 소개하겠습니다.

function validateResidentRegistrationNumber(residentRegistrationNumber) {
  const regex = /^\d{6}-\d{7}$/; // 주민등록번호 정규표현식
  
  if (!regex.test(residentRegistrationNumber)) {
    return false; // 형식에 맞지 않으면 유효하지 않음
  }
  
  const birthDate = residentRegistrationNumber.substr(0, 6); // 생년월일 추출
  const genderDigit = parseInt(residentRegistrationNumber.substr(7, 1), 10) % 2; // 성별 구분 아이디 추출
  
  // 생년월일 체크
  const year = parseInt(birthDate.substr(0, 2), 10) + 1900; // 1900년 이후 출생자는 19xx년, 그 이전 출생자는 20xx년
  const month = parseInt(birthDate.substr(2, 2), 10);
  const day = parseInt(birthDate.substr(4, 2), 10);
  
  const birth = new Date(year, month - 1, day); // 생년월일로 Date 객체 생성
  
  if (birth.getFullYear() !== year || birth.getMonth() + 1 !== month || birth.getDate() !== day) {
    return false; // 생년월일이 유효하지 않으면 유효하지 않음
  }
  
  // 성별 구분 아이디 체크
  const gender = genderDigit === 1 ? '남자' : '여자';

  return { valid: true, gender: gender };
}

위의 코드는 validateResidentRegistrationNumber 함수를 정의하고, 해당 함수로 주민등록번호를 유효성 검사하는 기능을 구현한 예시입니다. 정규표현식을 사용하여 주민등록번호의 형식을 검사하고, 생년월일과 성별 정보를 추출하여 유효성을 확인합니다.

사용 예시:

const residentRegistrationNumber = '990101-1234567';
const validationResult = validateResidentRegistrationNumber(residentRegistrationNumber);

if (validationResult.valid) {
  console.log('주민등록번호가 유효합니다.');
  console.log('성별:', validationResult.gender);
} else {
  console.log('주민등록번호가 유효하지 않습니다.');
}

주민등록번호가 유효하고 형식에 맞다면, 위의 예시 코드는 다음과 같은 결과를 출력할 것입니다:

주민등록번호가 유효합니다.
성별: 남자

이 방법을 사용하면 주민등록번호의 형식과 유효성을 간단하게 검사할 수 있습니다.