유틸리티

정규식(Regex) 테스트 방법과 자주 쓰는 패턴 정리

회원가입 폼에서 이메일 형식이 맞는지 검증해야 한다. if문으로 @가 있는지, .이 있는지 하나하나 체크하는 건 한계가 있다. 정규표현식(Regex) 한 줄이면 형식 검증이 끝난다. 문제는 그 한 줄을 만드는 게 쉽지 않다는 것이다.

정규식 기본 문법

패턴의미예시
.아무 문자 1개a.c → abc, a1c
\d숫자 1개\d{3} → 123, 456
\w영문/숫자/밑줄 1개\w+ → hello, user_1
*0번 이상 반복ab*c → ac, abc, abbc
+1번 이상 반복ab+c → abc, abbc
?0번 또는 1번colou?r → color, colour
[abc]a, b, c 중 하나[aeiou] → 모음 매칭
^문자열 시작^Hello → Hello로 시작
$문자열 끝end$ → end로 끝남

실무에서 자주 쓰는 패턴

이메일 검증

^[\w.-]+@[\w.-]+\.\w{2,}$

@ 앞에 영문·숫자·점·하이픈이 오고, @ 뒤에 도메인이 오는 구조를 검사한다.

한국 전화번호

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

010, 011 등으로 시작하는 휴대폰 번호를 매칭한다. 하이픈 유무에 관계없이 잡힌다.

한글만 추출

[가-힣]+

텍스트에서 한글 부분만 골라낼 때 쓴다.

TIP 정규식은 눈으로 검증하기 어렵다. 정규식 테스터에 패턴과 테스트 문자열을 넣으면 매칭되는 부분이 실시간으로 하이라이트된다. 캡처 그룹 결과와 매치 인덱스도 함께 보여준다.

플래그 설정

  • g (global): 첫 번째 매치만이 아닌 모든 매치를 찾는다
  • i (case-insensitive): 대소문자를 구분하지 않는다
  • m (multiline): ^와 $가 각 줄의 시작/끝에 매칭된다
  • s (dotAll): .이 줄바꿈 문자까지 포함한다

정규식은 한 번 익히면 언어를 바꿔도 거의 그대로 쓸 수 있다. JavaScript, Python, Java, Go 어디서든 문법이 거의 같다. 패턴을 코드에 적용하기 전에 테스터로 먼저 돌려보는 습관을 들이면 디버깅 시간이 크게 줄어든다.