정규 표현식 실전 대전: 이메일, 전화번호, 날짜 형식 검증 패턴 완전 정리

정규 표현식(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
즉시 테스트:URL 목록을 정규 표현식 도구에 붙여넣고 「다중 행 모드」를 선택하면 형식 오류 URL을 빠르게 필터링할 수 있습니다.

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 플래그를 추가하고, 이메일 패턴은 대소문자를 구분하는 것이 일반적입니다.

정리

  • 모든 패턴은 정규 표현식 도구에서 실시간 테스트 가능
  • 최종 검증은 서버 사이드에서—Regex는 프론트엔드의 첫 번째 필터에 불과
  • 복잡한 검증 로직(날짜 유효성, 체크섬)에는 프로그램 로직이 필요
  • 두 패턴의 차이를 비교하려면 텍스트 비교 도구를 활용하세요