유틸리티

정규식 테스트, 자주 쓰는 정규표현식 패턴과 확인법

회원가입 폼에서 이메일 형식이 맞는지 검증해야 한다. if문으로 @가 있는지, .이 있는지 하나씩 체크하는 건 비효율적이고 허점도 많다. 정규표현식 한 줄이면 패턴 검증이 끝난다.

정규표현식 기본 문법

처음 보면 암호문처럼 보이지만, 기본 기호 10개만 알면 대부분의 패턴을 읽을 수 있다.

기호의미예시
.아무 문자 1개a.c → abc, a1c
\d숫자 (0~9)\d{3} → 123, 456
\w영문, 숫자, _\w+ → hello_123
\s공백, 탭, 줄바꿈\s+ → 연속 공백
^문자열 시작^Hello → Hello로 시작
$문자열 끝end$ → end로 끝남
+1개 이상 반복a+ → a, aa, aaa
*0개 이상 반복ab* → a, ab, abb
?0개 또는 1개colou?r → color, colour
[]문자 집합[aeiou] → 모음 1개

자주 쓰는 정규식 패턴

이메일 검증

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

@ 앞에 영문/숫자/일부 특수문자, @ 뒤에 도메인, 마지막에 2자 이상의 TLD를 확인한다.

한국 전화번호

^01[016789]-?\d{3,4}-?\d{4}$

010, 011, 016, 017, 018, 019로 시작하는 번호를 매칭한다. 하이픈은 있어도 없어도 통과한다.

한글만 허용

^[가-힣]+$

한글 완성형 글자만 허용하고 영문, 숫자, 특수문자는 거부한다. 이름 입력 필드에 자주 쓴다.

패턴을 테스트하는 방법

정규식은 작성보다 검증이 중요하다. 의도한 문자열은 통과하고, 의도하지 않은 문자열은 걸러지는지 실제 데이터로 확인해야 한다.

정규식 테스터에서 패턴을 입력하고 테스트 문자열을 넣으면 매칭 결과가 실시간으로 하이라이트된다. 캡처 그룹별 상세 정보도 표시되고, g/i/m/s 플래그를 토글하면서 동작 차이를 바로 확인할 수 있다. 이메일, URL, 전화번호 같은 프리셋 패턴도 제공되니 처음부터 작성할 필요 없이 수정해서 쓰면 된다.

TIP 정규식은 언어마다 미세한 차이가 있다. JavaScript에서 동작하는 패턴이 Python에서는 다르게 작동할 수 있다. 실제 적용 전에 타겟 언어 환경에서 한 번 더 테스트하는 게 안전하다.

정규식을 머릿속으로만 검증하면 예외 케이스를 놓치기 쉽다. 테스트 문자열 몇 줄 넣어보는 데 1분이면 충분하다.