유틸리티

정규식 테스트, 패턴 작성부터 실시간 매칭 확인까지

회원가입 폼에서 이메일 형식이 맞는지 검증하려면 정규식을 써야 한다. 패턴을 직접 짜면 동작은 하는데 엣지 케이스에서 빠지는 경우가 많고, 인터넷에서 복사해 오면 내 상황에 안 맞을 때가 있다. 결국 패턴을 테스트해볼 수 있는 환경이 필요하다.

자주 쓰는 정규식 패턴

용도패턴설명
이메일[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}기본적인 이메일 형식 검증
휴대폰 번호01[016789]-?\d{3,4}-?\d{4}010-1234-5678, 01012345678 모두 매칭
한글만[가-힣]+한글 문자만 추출
URLhttps?://[\w.-]+(?:\.[\w]+)+[/\w.-]*http, https 주소 매칭
숫자만\d+연속된 숫자 추출

정규식 기본 문법

처음 접하면 암호처럼 보이지만, 핵심 문법은 몇 가지 안 된다.

  • . — 아무 문자 한 개 (줄바꿈 제외)
  • \d — 숫자 한 개 (0-9)
  • \w — 영문, 숫자, 밑줄 (word character)
  • + — 앞 패턴이 1회 이상 반복
  • * — 앞 패턴이 0회 이상 반복
  • ? — 앞 패턴이 0 또는 1회
  • [abc] — a, b, c 중 하나
  • () — 캡처 그룹 (매칭된 부분을 따로 추출)

패턴을 테스트하는 방법

코드에 정규식을 넣고 실행해서 결과를 확인하는 것은 비효율적이다. 패턴을 수정할 때마다 코드를 다시 돌려야 하기 때문이다.

정규식 테스터에 패턴과 테스트 문자열을 입력하면 매칭 결과가 실시간으로 하이라이트된다. 캡처 그룹별 매칭 내용도 상세하게 보여주고, g(전역), i(대소문자 무시), m(멀티라인) 같은 플래그도 체크박스로 쉽게 전환할 수 있다.

TIP 이메일, URL, 전화번호, 한글 같은 프리셋 패턴이 내장되어 있다. 처음부터 패턴을 짤 필요 없이 프리셋을 불러온 뒤 본인 상황에 맞게 수정하면 시간을 줄일 수 있다.

정규식 작성 시 흔한 실수

  1. 탐욕적 매칭.*은 가능한 한 많이 매칭한다. 최소한만 잡으려면 .*?를 써야 한다.
  2. 이스케이프 누락.은 "아무 문자"를 의미한다. 마침표 자체를 찾으려면 \.으로 이스케이프해야 한다.
  3. 앵커 미사용^(시작)과 $(끝)을 빼면 문자열 중간의 부분 일치도 통과시킨다. 입력 전체가 패턴과 일치하는지 확인하려면 양쪽에 앵커를 붙여야 한다.

정규식은 한 번 익혀두면 어느 언어에서든 비슷하게 쓸 수 있다. 복잡한 패턴을 짤 때는 테스터에서 먼저 검증하고 코드에 옮기는 습관이 디버깅 시간을 확실히 줄여준다.