DevTool Hub
Guide

이메일 정규식의 함정: 왜 완벽한 패턴은 없는가

RFC 표준과 실제 서비스 환경의 차이, 정규식으로만 이메일을 검증할 때 발생하는 문제와 권장 방식을 설명합니다.

작성자: DevTool Hub게시일: 2026-03-25업데이트: 2026-03-25읽는 시간: 약 2

목차

이메일 정규식의 함정: 왜 완벽한 패턴은 없는가

사용자로부터 이메일 주소를 입력받을 때 정규식(Regex)은 필수적인 도구입니다. 하지만 "완벽한 이메일 정규식"을 찾으려 할수록 코드는 복잡해지고, 정작 유효한 사용자의 이메일을 거부하는 부작용이 생기곤 합니다.

1) 왜 이메일 정규식은 복잡한가

이메일 주소의 표준 규격은 RFC 5322(및 관련 표준들)에 정의되어 있습니다. 이 표준을 100% 충족하는 정규식은 수백 줄에 달할 정도로 거대하며, 현실적으로 코드에 그대로 붙여넣기 어렵습니다.

  • 표준에서 허용하지만 우리가 흔히 무시하는 것:
    • user+filter@example.com (플러스 태깅)
    • user.name@sub.example.com (다중 서브도메인)
    • "very.common.non-standard"@example.com (따옴표가 포함된 로컬 파트)
    • .museum, .travel 같은 신규 GTLD (4글자 이상의 도메인 확장자)

2) 흔히 저지르는 정규식 실수

많은 개발자가 범용적으로 사용하는 패턴들이 다음과 같은 문제를 일으킵니다.

  • 도메인 확장자를 2~3글자로 제한: \.[a-z]{2,3}$ 처럼 작성하면 .info, .online, .center 같은 최신 도메인을 사용하는 유효한 이메일을 차단하게 됩니다.
  • 특수문자 차단: +, -, _는 이메일 로컬 파트에서 매우 흔하게 쓰입니다. 이를 허용하지 않으면 많은 개발자 사용자층을 잃을 수 있습니다.
  • 대소문자 구분: 표준상 도메인 파트는 대소문자를 구분하지 않지만, 정규식에서 [a-z]만 허용하고 i 플래그를 빼먹으면 대문자가 포함된 도메인을 걸러내지 못합니다.

3) 권장되는 정규식 전략 (KISS 원칙)

정규식으로 모든 것을 완벽하게 검증하려 하지 마세요. 정규식의 역할은 **"오타로 인한 명백한 잘못된 형식"**을 걸러내는 것으로 충분합니다.

추천하는 중도적 패턴

/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
  • 장점: 대부분의 유효한 이메일을 허용하면서 최소한의 @와 도메인 구조를 확인합니다.
  • 주의: 도메인 부분의 .이 연속해서 오거나(..) 하는 세세한 경우까지는 못 잡지만, 실무적으로 가장 안전합니다.

4) 정규식보다 중요한 '실제 검증'

정규식은 형식(Format)만 확인합니다. 해당 이메일 주소가 실제로 존재하는지, 사용자가 소유하고 있는지는 알 수 없습니다.

  1. 최소한의 정규식 검증: 오타 방지용
  2. 이메일 인증 링크(OTP) 발송: 실제 소유권 확인
  3. 도메인 MX 레코드 확인: (서버단에서) 해당 도메인이 실제로 메일을 받을 수 있는지 확인

5) 결론

사용자 경험(UX) 관점에서 가장 나쁜 것은 **"내 이메일이 분명히 맞는데도 사이트가 틀렸다고 우기는 상황"**입니다. 정규식은 가급적 너그럽게 유지하고, 실제 유효성은 인증 메일을 통해 확인하는 것이 현대적인 웹 개발의 정석입니다.

다양한 패턴을 테스트해 보고 싶다면 Regex Tester에서 실제 이메일 샘플을 넣고 실험해 보세요.

Author

운영 및 검수 정보

이 문서는 DevTool Hub에서 작성하고 유지 보수합니다. 실무에서 자주 발생하는 문제를 기준으로 정리하며, 잘못된 설명이나 오래된 내용은 검토 후 수정합니다.

운영 정책은 Editorial Policy에서 확인할 수 있고, 수정 제보는 Contact로 받을 수 있습니다.

관련 도구

다음 읽을 글

Feedback
내용 개선이나 오류 제보는 Contact로 알려주세요.