사용자가 입력한 이메일 주소가 올바른 형식인지 확인하려면 조건문을 여러 개 쓸 수도 있지만, 정규표현식 한 줄이면 끝난다. 처음 접하면 외계어처럼 보이지만, 기본 기호 10개만 익히면 대부분의 패턴을 읽고 쓸 수 있다.
정규식 기본 기호
| 기호 | 의미 | 예시 |
|---|---|---|
. | 아무 문자 1개 | a.c → abc, a1c, a@c |
* | 앞 문자 0회 이상 반복 | ab*c → ac, abc, abbc |
+ | 앞 문자 1회 이상 반복 | ab+c → abc, abbc (ac은 X) |
? | 앞 문자 0회 또는 1회 | colou?r → color, colour |
\d | 숫자 (0-9) | \d{3} → 123, 456 |
\w | 영문, 숫자, 밑줄 | \w+ → hello, test_1 |
[abc] | a, b, c 중 하나 | [aeiou] → 모음 1개 |
^ | 문자열 시작 | ^Hello → Hello로 시작하는 줄 |
$ | 문자열 끝 | end$ → end로 끝나는 줄 |
() | 그룹 캡처 | (\d{2})-(\d{4}) → 그룹별 추출 |
자주 쓰는 정규식 패턴
- 이메일 검증
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}- 한국 전화번호
01[016789]-?\d{3,4}-?\d{4}- URL
https?://[\w\-]+(\.[\w\-]+)+[/\w\-.,@?^=%&:~+#]*- 한글만
[가-힣]+- 숫자만 (콤마 포함 가격)
\d{1,3}(,\d{3})*
정규식 테스트하는 법
- 패턴 입력: 정규식 테스터의 Pattern 칸에 정규표현식을 입력한다. 프리셋(이메일, URL, 전화번호 등)을 클릭하면 바로 채워진다.
- 플래그 설정: g(전체 매칭), i(대소문자 무시), m(멀티라인) 등 필요한 플래그를 켠다.
- 테스트 문자열 입력: 검증할 텍스트를 넣으면 매칭되는 부분이 실시간으로 하이라이트된다.
- 결과 확인: 매치 개수, 각 매치의 위치, 캡처 그룹 내용이 상세하게 표시된다.
TIP 정규식을 처음 짤 때는 간단한 패턴부터 시작해서 조건을 하나씩 추가하는 게 좋다. 한 번에 복잡한 패턴을 쓰면 어디서 틀렸는지 찾기 어렵다.
플래그 옵션 정리
- g (global): 첫 번째 매치에서 멈추지 않고 전체를 검색한다. 대부분의 경우 켜두는 게 맞다.
- i (ignore case): A와 a를 같은 문자로 취급한다.
- m (multiline): ^와 $가 전체 문자열이 아닌 각 줄의 시작/끝을 의미한다.
- s (dotAll): .이 줄바꿈 문자까지 포함해서 매칭한다.
정규표현식은 한 번 익히면 어떤 프로그래밍 언어에서든 쓸 수 있다. 코드에 적용하기 전에 테스터에서 먼저 돌려보면 디버깅 시간이 줄어든다.