·1분 읽기

정규식 주민번호 검증 — 7자리 생년월일 포맷 확인과 비식별화

주민번호 앞 7자리(YYMMDD-N) 정규식으로 검증하는 실전 패턴이에요. 유효 생년월일 판정, 성별 구분, 뒷자리 마스킹까지 한 번에 정리했어요.

정규식 주민번호 검증 — 7자리 생년월일 포맷 확인과 비식별화
🔍
정규식 테스터 바로 사용하기
정규표현식을 테스트하고 매치 결과를 확인하세요

주민번호는 왜 정규식으로 검증해야 하나

**개인정보보호법**상 주민번호 수집·처리는 매우 제한돼요. 그래서 대부분 시스템은 **앞 7자리(YYMMDD-N)만 저장**하거나 뒷자리를 마스킹해요. 이 7자리도 형식 검증은 필요해요. 빈 값, 하이픈 위치 오류, 날짜 불일치 같은 입력 실수가 많거든요. 정규식 한 줄로 이 검증이 가능해요. 실무에서 자주 쓰는 패턴을 정리했어요.

1. 기본 7자리 형식 검증

YYMMDD-N 형식이에요. 하이픈 포함해서 정규식은 이래요. ``` ^\d{6}-[1-4]$ ``` - 6자리 숫자(YYMMDD) - 하이픈 - 1~4 중 하나 (성별·세기 구분) - 1·2: 1900년대생 - 3·4: 2000년대생 - 홀수: 남성, 짝수: 여성

2. 유효 생년월일까지 체크

월은 01~12, 일은 01~31까지만 허용하는 강화 패턴이에요. ``` ^\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])-[1-4]$ ``` 2월 30일 같은 잘못된 날짜는 못 걸러요. 그건 정규식 말고 **날짜 파싱 라이브러리**가 따로 해야 해요. JavaScript: `new Date(year, month-1, day)` 검증 Python: `datetime.date(year, month, day)` 예외 처리

3. 하이픈 선택적으로 허용

사용자가 하이픈 없이 입력할 수도 있어요. `?` 수식어로 선택 처리해요. ``` ^\d{6}-?[1-4]$ ``` 프론트엔드에서 입력 자동 포맷팅(하이픈 자동 삽입)을 하면 사용자 경험도 좋아져요.

4. 뒷자리 마스킹 처리

로그나 화면에 주민번호가 남으면 위험해요. 뒷자리를 `*`로 가리는 정규식 치환이에요. ```javascript // JavaScript const masked = input.replace(/(\d{6})-(\d)\d*/, '$1-$2******'); // "901231-1234567" → "901231-1******" ``` ```python # Python import re masked = re.sub(r'(\d{6})-(\d)\d*', r'\1-\2******', input_str) ``` **DB에 원본 저장 금지**가 원칙이에요. 저장할 거면 암호화 필수.

5. Toolkio Regex Tester로 검증 흐름

Toolkio Regex Tester에 패턴과 테스트 데이터를 넣으면 매칭 결과가 실시간으로 보여요. 여러 패턴을 빠르게 비교할 수 있어서 팀 공유 전 검증에 유용해요.

지금 바로 정규식 테스터를 사용해보세요

무료이며, 브라우저에서 바로 실행됩니다.

정규식 테스터