유틸리티

정규식 테스트, 패턴 작성부터 매칭 확인까지 한 번에

회원가입 폼에서 이메일 형식을 검증하는 정규식을 짰는데, 테스트해보니 user@example처럼 도메인 없는 주소도 통과된다. 패턴이 잘못됐는데 어디가 틀린 건지 눈으로는 찾기 어렵다.

정규식을 테스트해야 하는 이유

정규표현식(Regular Expression)은 문자열 패턴을 정의하는 문법이다. 강력하지만 한 글자만 잘못 써도 의도와 다르게 동작한다. 코드에 바로 넣고 돌려보면 에러 원인을 찾는 데 시간이 오래 걸린다. 별도 테스트 환경에서 패턴을 검증하고 코드에 적용하는 순서가 맞다.

자주 쓰는 정규식 패턴

용도패턴 예시
이메일[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
전화번호 (한국)01[016789]-?\d{3,4}-?\d{4}
한글만[가-힣]+
URLhttps?://[\w\-._~:/?#\[\]@!$&'()*+,;=%]+
숫자만^\d+$

플래그의 역할

정규식 뒤에 붙는 플래그에 따라 검색 범위가 달라진다.

g (global)
첫 번째 매칭에서 멈추지 않고 전체 텍스트에서 모든 매칭을 찾는다.
i (ignore case)
대소문자를 구분하지 않는다. /abc/i는 ABC, Abc 모두 매칭된다.
m (multiline)
^$가 전체 텍스트가 아닌 각 줄의 시작과 끝을 기준으로 동작한다.

실시간으로 테스트하는 법

정규식 테스터에 패턴과 테스트 문자열을 넣으면 매칭되는 부분이 즉시 하이라이트된다. 캡처 그룹별 내용과 매칭 위치(인덱스)도 상세하게 표시되니, 그룹핑이 의도대로 동작하는지 한눈에 확인할 수 있다. 이메일, 전화번호, URL 같은 프리셋 패턴도 준비되어 있어서 처음부터 작성할 필요 없이 가져다 수정하면 된다.

TIP Quick Reference 영역에 \d, \w, *, + 같은 기본 문법이 정리되어 있다. 정규식 문법이 갑자기 생각나지 않을 때 바로 참고할 수 있다.

정규식은 한 번 제대로 테스트하면 코드에서 버그가 터질 확률이 크게 줄어든다. 패턴을 코드에 넣기 전에 반드시 검증하는 습관을 들이자.