왜 한국 입력값에는 별도 패턴이 필요한가
한글은 유니코드 BMP 의 가나다 음절 영역 (U+AC00 ~ U+D7A3) 과 자모 영역 (U+1100 ~) 을 함께 쓴다. 영문 알파벳 기반 정규식 (`[a-zA-Z]+`) 은 한글을 잡지 못한다. 한국 특유의 식별자 (휴대폰 010 시작 · 주민번호 6자리-7자리) 도 별도 규칙. 이 글은 8가지를 정리한다 — 모두 JavaScript ES2018+ 기준 (`\d` · 유니코드 모드 `u`).
실제 패턴을 정규식 테스터에서 시험할 수 있다. "자주 쓰는 패턴" 라이브러리에 8개 모두 등록되어 있어 한 번 클릭으로 적용된다.
1. 휴대폰 번호
/^(01[016789])-?(\d{3,4})-?(\d{4})$/010 · 011 · 016 · 017 · 018 · 019 시작 + 3~4자리 + 4자리. 하이픈은 선택. -? 가 0 회 또는 1 회 매치. 매치되는 그룹 3 개로 포맷 통일이 가능 (예: 모두 010-1234-5678 형태로 정규화).
2. 주민등록번호
/^\d{6}-?[1-4]\d{6}$/6 자리 생년월일 + 하이픈 (선택) + 성별/세기 코드 (1~4) + 6 자리. 실제 마지막 자리 검증 (체크 디지트) 은 별도 알고리즘 필요. 본 패턴은 구조 검증만. 주의: 사용자 입력 단계에서 즉시 마스킹 권장 (보안 + 「개인정보보호법」 §23).
3. 우편번호 (5자리)
/^\d{5}$/2015 년 도로명 주소 시행 후 5자리로 통일. 이전의 6자리 형식 (123-456) 은 더 이상 쓰지 않는다. 입력 단계에서 5자리만 허용.
4. 사업자등록번호
/^\d{3}-?\d{2}-?\d{5}$/3 자리 + 2 자리 + 5 자리, 총 10 자리. 하이픈 선택. 체크 디지트 검증은 별도 알고리즘. AdSense 신청 등에 필요.
5. 한글만 허용
/^[가-힣]+$/가나다 음절 영역만 허용. 자모 분리 (ㄱ + ㅏ) 는 거부. 사용자 이름 입력 등에서 영문 · 숫자 · 공백 입력을 막을 때. caveat: 한자 (한국어 표기에 가끔 사용) 와 영문 mixed 이름 (예: "Lee 영희") 은 거부 — UX 여부 확인 후 사용.
6. 이메일
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/실용적 단순화. RFC 5322 완전 패턴 (수백 줄) 은 과도하다. 위 패턴이 99% 이메일을 잡지만 IDN (한글 도메인) 은 별도. 더 엄격한 검증은 실제 메일 발송 + 인증 링크 클릭으로.
7. URL (http/https)
/^https?:\/\/[\w.-]+(?::\d+)?(?:\/[^\s]*)?$/프로토콜 (http 또는 https) + 호스트 + 선택적 포트 + 선택적 path. ftp · file 등 다른 프로토콜은 거부. 대부분의 웹 입력에 충분.
8. IPv4
/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/각 옥텟이 0–255 범위. 25[0-5] | 2[0-4]\d | [01]?\d\d? 으로 cap. 192.168.0.1 ✓,256.0.0.1 ✗.
한 번 시험해 보세요
위 8 패턴은 모두 정규식 테스터에 라이브러리로 등록되어 있다. 클릭 한 번으로 적용 후 자기 데이터로 매치 결과를 즉시 확인 가능. 패턴 입력은 /foo/gi 형식도 자동 인식 (앞뒤 슬래시와 flag 분리).
관련 도구
- 정규식 테스터 — 패턴 시험
- Diff — 두 패턴의 매치 결과 비교
- Text stats — 입력 분량 측정
- Slugify — 한글 제목을 URL 슬러그로