회원가입 폼에 이메일 검증을 넣어야 하는데, 정규식을 어떻게 써야 하는지 검색부터 시작한다. 복사해서 붙여넣긴 했는데 실제로 맞는 패턴인지 확신이 없다. 정규식은 작성보다 검증이 더 중요하다.
정규식 기본 문법 요약
| 기호 | 의미 | 예시 |
|---|---|---|
. | 아무 문자 1개 | a.c → abc, a1c |
* | 앞 문자 0개 이상 | ab*c → ac, abc, abbc |
+ | 앞 문자 1개 이상 | ab+c → abc, abbc (ac는 불가) |
\d | 숫자 (0~9) | \d{3} → 123, 456 |
\w | 알파벳, 숫자, _ | \w+ → hello, user_1 |
[ ] | 문자 클래스 | [a-z] → 소문자 1개 |
^ / $ | 시작 / 끝 | ^hello$ → 정확히 hello만 |
자주 쓰는 패턴 예시
이메일 검증
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
@ 앞뒤에 영문, 숫자, 일부 특수문자를 허용하고, 마지막에 도메인 확장자(.com, .kr 등)가 오는지 확인한다.
한국 휴대전화 번호
01[016789]-?\d{3,4}-?\d{4}
010, 011, 016, 017, 018, 019로 시작하고 하이픈은 있어도 없어도 매칭된다.
한글만 허용
[가-힣]+
완성형 한글(가~힣)만 매칭한다. 자음이나 모음만 따로 입력된 건 걸러낸다.
패턴이 맞는지 확인하는 법
정규식은 한 글자만 빠져도 의도와 다르게 작동한다. 정규식 테스터에 패턴을 넣고 테스트 문자열을 입력하면 매칭되는 부분이 실시간으로 하이라이트 된다. 매치 개수와 캡처 그룹까지 확인할 수 있어서, 패턴이 의도한 대로 동작하는지 코드에 넣기 전에 검증할 수 있다.
TIP 이메일, URL, 전화번호 같은 프리셋 패턴이 기본 제공된다. 처음부터 작성하기보다 프리셋을 기반으로 수정하는 게 실수를 줄인다.
정규식은 외워서 쓰는 게 아니라, 만들고 테스트하고 수정하는 과정을 반복하는 거다. 패턴이 복잡해질수록 테스트 도구 없이 검증하는 건 무모하다.