유틸리티

정규식 테스트 사이트, 이메일/전화번호 패턴 확인하는 법

회원가입 폼에서 이메일 유효성을 검사하는 정규식을 작성했다. 그런데 user@domain은 통과하고 [email protected]은 막히는 문제가 생겼다. 패턴이 어디서 틀렸는지 코드를 수정하고 다시 실행하는 걸 반복하면 시간이 오래 걸린다.

정규식을 실시간으로 테스트하는 법

정규식 테스터에 패턴을 입력하고 아래에 테스트 문자열을 넣으면 매칭 결과가 실시간으로 표시된다. 매칭된 부분은 초록색으로 하이라이트되고, 패턴에 오류가 있으면 빨간색으로 알려준다. 코드를 돌려볼 필요 없이 패턴을 고치면서 바로 확인할 수 있다.

자주 쓰는 정규식 패턴

용도패턴 예시매칭 대상
이메일[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}[email protected]
전화번호01[016789]-\d{3,4}-\d{4}010-1234-5678
한글만[가-힣]+안녕하세요
숫자만\d+12345

이 패턴들은 프리셋 버튼으로 클릭 한 번에 입력할 수도 있다. 프리셋에 이메일, URL, 전화번호, 한글, 숫자, 사용자명이 포함되어 있다.

플래그 설정으로 매칭 범위 조절하기

g (global)
첫 번째 매칭만이 아니라 전체 텍스트에서 모든 매칭을 찾는다. 대부분의 경우 켜놓는 게 편하다.
i (ignore case)
대소문자를 구분하지 않는다. 이메일 도메인처럼 대소문자가 섞일 수 있는 입력에 유용하다.
m (multiline)
여러 줄 텍스트에서 각 줄의 시작(^)과 끝($)을 인식한다.
s (dotAll)
점(.)이 줄바꿈 문자도 매칭하게 된다. HTML 태그 사이 내용을 추출할 때 필요할 수 있다.
TIP 캡처 그룹을 쓰면 매칭된 텍스트의 특정 부분만 뽑아낼 수 있다. 예를 들어 전화번호 패턴에서 (\d{3})-(\d{4})-(\d{4})로 작성하면 지역번호, 중간 번호, 끝 번호를 각각 그룹으로 분리해준다.

정규식은 작성보다 디버깅에 시간이 더 많이 든다. 실시간 테스터로 패턴을 수정하면서 바로 결과를 확인하면 그 시간을 크게 줄일 수 있다.