회원가입 폼에 이메일 검사를 넣어야 한다. 정규식을 작성하고 나면 항상 의심이 남는다. 제대로 걸러지는 건 맞는지, 멀쩡한 이메일까지 막고 있는 건 아닌지. 코드에 넣기 전에 따로 테스트할 수 있으면 실수를 많이 줄인다.
정규식이 필요한 상황
- 입력값 검증
- 이메일, 전화번호, 우편번호처럼 형식이 정해진 값을 걸러낸다
- 로그 파싱
- 수천 줄의 로그에서 IP 주소나 에러 코드 같은 특정 패턴만 추출할 때 쓴다
- 텍스트 치환
- 일괄 변환이 필요할 때, 단순 find & replace보다 정교하게 처리할 수 있다
자주 쓰는 패턴 예시
| 용도 | 정규식 | 매치 예시 |
|---|---|---|
| 이메일 | [\w.-]+@[\w.-]+\.\w+ | [email protected] |
| 전화번호 | 01[016789]-?\d{3,4}-?\d{4} | 010-1234-5678 |
| 한글만 | [가-힣]+ | 정규표현식 |
| URL | https?://[\w./~?&=-]+ | https://example.com |
패턴을 외우는 것보다 중요한 건, 작성한 패턴이 실제 데이터에서 어떻게 동작하는지 눈으로 확인하는 것이다.
플래그에 따라 결과가 달라진다
같은 정규식이라도 플래그 설정에 따라 매치 범위가 완전히 바뀐다.
g(global): 첫 매치만이 아니라 전체에서 모든 매치를 찾는다i(insensitive): 대소문자를 구분하지 않는다./error/i는 Error, ERROR 모두 잡는다m(multiline):^과$가 각 줄의 시작과 끝에 매치된다s(dotAll):.이 줄바꿈 문자까지 포함해서 매치된다
주의 플래그 하나 차이로 결과가 완전히 달라진다. 로그 전체에서 패턴을 찾아야 하는데 g 플래그를 안 넣으면 첫 번째 매치 하나만 나온다.
패턴 작성 후 바로 테스트하기
IDE의 정규식 검색으로도 되지만, 캡처 그룹이나 매치 인덱스까지 확인하려면 전용 도구가 편하다. 온라인 정규식 테스터는 패턴을 입력하는 즉시 매치 결과가 하이라이트되고, 각 매치의 위치와 캡처 그룹 정보까지 상세하게 보여준다. 이메일, URL, 전화번호 같은 프리셋 패턴도 클릭 한 번이면 채워지니까, 처음부터 짜기 부담스러울 때 참고용으로 쓰기 좋다.
정규식은 한 번 익히면 언어가 바뀌어도 거의 같은 문법으로 쓸 수 있다. 테스트 도구로 감을 잡아두면 복잡한 패턴도 금방 만들게 된다.