유틸리티

이메일 형식 검사하는 정규식 만들다가 막혔을 때 해결하는 방법

회원가입 폼에서 이메일 유효성 검사를 구현하려고 정규식을 만들기 시작했습니다. 그런데 패턴을 작성하다 보니 점점 복잡해지고, 이게 제대로 작동하는 건지 확인하기도 어렵습니다. 콘솔에서 테스트해봐도 뭐가 잘못된 건지 찾기 힘들죠. 정규식 테스터를 사용하면 패턴을 실시간으로 테스트하고 매치 결과를 눈으로 바로 확인할 수 있습니다.

정규표현식이란?

정규표현식(Regular Expression, Regex)은 문자열에서 특정 패턴을 찾거나 치환하기 위한 표현식입니다. 이메일 주소가 올바른 형식인지, 전화번호가 010으로 시작하는지, 비밀번호에 특수문자가 포함되어 있는지 등을 검사할 때 사용합니다. 강력하지만 문법이 복잡해서 처음에는 어렵게 느껴질 수 있습니다.

실시간으로 패턴 테스트하기

온라인 정규식 테스터에서는 패턴을 입력하면 즉시 결과가 표시됩니다. 테스트 문자열에서 매치되는 부분이 하이라이트로 강조되어, 패턴이 원하는 대로 작동하는지 바로 확인할 수 있습니다. 패턴을 수정할 때마다 결과가 실시간으로 업데이트되어 디버깅이 훨씬 수월합니다.

플래그 설정으로 매칭 방식 조절

정규식 플래그는 패턴의 동작 방식을 조절합니다:

  • g (global): 첫 번째 매치에서 멈추지 않고 모든 매치를 찾습니다
  • i (insensitive): 대소문자를 구분하지 않습니다. ABC도 abc도 같게 취급
  • m (multiline): ^와 $가 각 줄의 시작과 끝에도 매치됩니다
  • s (dotAll): 점(.)이 줄바꿈 문자도 포함하여 모든 문자에 매치됩니다

플래그 체크박스를 토글하면서 결과가 어떻게 달라지는지 실험해볼 수 있습니다.

프리셋 패턴으로 빠르게 시작

자주 사용하는 정규식 패턴이 프리셋으로 제공됩니다:

  • 이메일: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}
  • URL: https?://로 시작하는 웹 주소
  • 전화번호: 010-0000-0000 형식
  • 한글: [가-힣]+ 완성형 한글 문자
  • 숫자: d+ 연속된 숫자
  • 사용자명: 영문으로 시작하는 2-20자 아이디

프리셋을 클릭하면 패턴이 자동 입력되어, 처음부터 작성할 필요 없이 바로 테스트를 시작할 수 있습니다.

캡처 그룹 확인하기

Regex 테스터의 Match Details 섹션에서는 각 매치의 상세 정보를 보여줍니다. 괄호로 묶은 캡처 그룹이 무엇을 캡처했는지, 매치된 문자열이 원본에서 몇 번째 위치(인덱스)에 있는지 확인할 수 있습니다. 복잡한 패턴을 디버깅할 때 특히 유용합니다.

Quick Reference로 문법 참고

정규식 문법이 헷갈릴 때 참고할 수 있는 치트시트가 제공됩니다:

  • d: 숫자 (0-9)
  • w: 단어 문자 (영숫자와 밑줄)
  • s: 공백 문자
  • +: 1개 이상 반복
  • *: 0개 이상 반복
  • ?: 0개 또는 1개
  • {n,m}: n개 이상 m개 이하
  • [abc]: 문자 클래스 (a, b, c 중 하나)
  • ^: 문자열 시작
  • $: 문자열 끝

에러 메시지로 문제 파악

정규식 문법에 오류가 있으면 명확한 에러 메시지가 표시됩니다. 괄호 짝이 맞지 않거나, 이스케이프가 필요한 특수문자를 그대로 사용했거나 하는 문제를 바로 알 수 있습니다. 콘솔에서 "Invalid regular expression" 메시지만 보고 헤매는 것보다 훨씬 효율적입니다.

JavaScript 엔진 기반

이 도구는 JavaScript의 정규식 엔진을 사용합니다. Python, PHP, Java 등 다른 언어에서는 문법이 조금 다를 수 있으니 참고하세요. 예를 들어 lookbehind 문법이나 유니코드 처리 방식에서 차이가 있을 수 있습니다.

마무리

정규식 패턴이 제대로 작동하는지 확인하고 싶을 때, 정규식 테스터를 활용하면 됩니다. 실시간 하이라이트, 캡처 그룹 시각화, 프리셋 패턴, Quick Reference까지 제공되어 정규식 작성과 디버깅이 훨씬 수월해집니다. 이메일, URL, 전화번호 검증 같은 일반적인 패턴부터 복잡한 로그 파싱 패턴까지 테스트해볼 수 있습니다.