유틸리티

정규식 테스트, 패턴이 맞는지 실시간으로 확인하는 법

회원가입 폼에 이메일 검사를 넣어야 한다. 정규식을 작성하고 나면 항상 의심이 남는다. 제대로 걸러지는 건 맞는지, 멀쩡한 이메일까지 막고 있는 건 아닌지. 코드에 넣기 전에 따로 테스트할 수 있으면 실수를 많이 줄인다.

정규식이 필요한 상황

입력값 검증
이메일, 전화번호, 우편번호처럼 형식이 정해진 값을 걸러낸다
로그 파싱
수천 줄의 로그에서 IP 주소나 에러 코드 같은 특정 패턴만 추출할 때 쓴다
텍스트 치환
일괄 변환이 필요할 때, 단순 find & replace보다 정교하게 처리할 수 있다

자주 쓰는 패턴 예시

용도정규식매치 예시
이메일[\w.-]+@[\w.-]+\.\w+[email protected]
전화번호01[016789]-?\d{3,4}-?\d{4}010-1234-5678
한글만[가-힣]+정규표현식
URLhttps?://[\w./~?&=-]+https://example.com

패턴을 외우는 것보다 중요한 건, 작성한 패턴이 실제 데이터에서 어떻게 동작하는지 눈으로 확인하는 것이다.

플래그에 따라 결과가 달라진다

같은 정규식이라도 플래그 설정에 따라 매치 범위가 완전히 바뀐다.

  • g (global): 첫 매치만이 아니라 전체에서 모든 매치를 찾는다
  • i (insensitive): 대소문자를 구분하지 않는다. /error/i는 Error, ERROR 모두 잡는다
  • m (multiline): ^$가 각 줄의 시작과 끝에 매치된다
  • s (dotAll): .이 줄바꿈 문자까지 포함해서 매치된다
주의 플래그 하나 차이로 결과가 완전히 달라진다. 로그 전체에서 패턴을 찾아야 하는데 g 플래그를 안 넣으면 첫 번째 매치 하나만 나온다.

패턴 작성 후 바로 테스트하기

IDE의 정규식 검색으로도 되지만, 캡처 그룹이나 매치 인덱스까지 확인하려면 전용 도구가 편하다. 온라인 정규식 테스터는 패턴을 입력하는 즉시 매치 결과가 하이라이트되고, 각 매치의 위치와 캡처 그룹 정보까지 상세하게 보여준다. 이메일, URL, 전화번호 같은 프리셋 패턴도 클릭 한 번이면 채워지니까, 처음부터 짜기 부담스러울 때 참고용으로 쓰기 좋다.

정규식은 한 번 익히면 언어가 바뀌어도 거의 같은 문법으로 쓸 수 있다. 테스트 도구로 감을 잡아두면 복잡한 패턴도 금방 만들게 된다.