정규 표현식(Regular Expression, Regex)의 문법 자체는 어렵지 않지만, 「정확한」 검증 패턴을 처음부터 작성하려면 수많은 엣지 케이스를 고려해야 합니다. 이 글에서는 문법 설명 없이 바로 사용할 수 있는 실전 패턴을 직접 제공합니다. 각 패턴에는 설명, 경계 케이스, 주의사항이 포함되어 있습니다. 정규 표현식 도구에 붙여넣어 바로 테스트할 수 있습니다.
1. 이메일 주소 검증
이메일 형식은 단순해 보이지만 RFC 5322의 전체 규격은 매우 복잡합니다. 다음은 실용적으로 「충분한」 버전으로 실제 이메일 형식의 99%를 커버합니다:
/^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$/
| 테스트 문자열 | 결과 | 설명 |
|---|---|---|
| [email protected] | ✅ 통과 | 표준 형식 |
| [email protected] | ✅ 통과 | 플러스 기호, 서브도메인 포함 |
| user@example | ❌ 거부 | 최상위 도메인 없음 |
| @example.com | ❌ 거부 | 로컬 부분 없음 |
| user @example.com | ❌ 거부 | 공백 포함 |
주의:이메일 검증의 최종 수단은 확인 메일 발송입니다. Regex는 명백한 형식 오류만 걸러낼 수 있으며, 메일함이 실제로 존재하는지는 확인할 수 없습니다.
2. 한국 휴대폰 번호
/^01[016789]\d{7,8}$/
한국 휴대폰 번호는 010/011/016/017/018/019로 시작하며 10~11자리입니다. 하이픈 포함 형식:
/^01[016789]-\d{3,4}-\d{4}$/
3. 날짜 형식(YYYY-MM-DD)
/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/
이 패턴은 월(01~12)과 일(01~31)의 유효 범위를 검증하지만, 해당 월에 실제로 며칠이 있는지는 검증할 수 없습니다(예: 2023-02-30은 통과됩니다). 정확한 날짜 유효성 검사는 프로그램 로직이 필요합니다.
4. URL
/^https?:\/\/[^\s/$.?#].[^\s]*$/i
http와 https를 모두 커버하고 복잡한 경로, 쿼리 파라미터, 해시를 허용하며 공백이 포함된 잘못된 URL을 제외합니다. HTTPS만 허용하려면:
/^https:\/\/[^\s/$.?#].[^\s]*$/i
5. IPv4 주소
/^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/
각 octet의 범위(0~255)를 정확하게 검증하여 999.999.999.999처럼 형식은 맞지만 값이 유효하지 않은 경우를 방지합니다.
6. 비밀번호 강도 규칙
기본(8자 이상, 영문자와 숫자 포함):
/^(?=.*[a-zA-Z])(?=.*\d).{8,}$/
중간(8자 이상, 대소문자와 숫자 포함):
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/
엄격(8자 이상, 대소문자, 숫자, 특수문자 포함):
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}$/
7. 숫자 형식
양의 정수:
/^\d+$/
정수(음수 부호 포함):
/^-?\d+$/
부동소수점:
/^-?\d+(\.\d+)?$/
8. 한국어·중국어 문자(CJK 통합 한자)
/^[\u4e00-\u9fff\uac00-\ud7af]+$/
이 범위는 CJK 통합 한자와 한국어 완성형 글자를 커버합니다.
9. 한국 주민등록번호(앞 6자리 검증)
/^\d{6}-[1-4]\d{6}$/
주민등록번호 형식 검증만 가능하며, 유효성 검증(체크섬)에는 별도 로직이 필요합니다.
10. HTML 태그 제거
/<[^>]+>/g
빈 문자열로 치환하면 텍스트에서 HTML 태그를 제거할 수 있습니다:
const cleanText = htmlString.replace(/<[^>]+>/g, '');
주의:완전한 HTML 구조 파싱에는 Regex를 권장하지 않습니다. DOM Parser를 사용하세요.
자주 하는 실수와 주의사항
1. ^와 $ 누락
앵커가 없는 패턴은 「부분 일치」만으로도 통과됩니다. ^와 $를 추가해야 전체 문자열이 형식에 맞는지 확인할 수 있습니다.
2. 지나치게 엄격한 패턴으로 인한 오거부
{2,}를 사용하면 새로운 최상위 도메인을 가진 정상적인 이메일의 오거부를 방지할 수 있습니다.
3. 대소문자 구분
URL 패턴에는 i 플래그를 추가하고, 이메일 패턴은 대소문자를 구분하는 것이 일반적입니다.