유틸리티

정규식 기초, 자주 쓰는 패턴 5가지와 테스트 방법

입력 폼에서 이메일 형식이 맞는지 검증하려면 정규표현식(Regular Expression)이 필요하다. 처음 보면 /^[a-zA-Z0-9]+@[a-z]+\.[a-z]{2,}$/ 같은 게 외계어처럼 보이지만, 기호 몇 개의 의미만 알면 패턴을 읽고 쓸 수 있다.

정규식 기본 기호 정리

기호의미예시
.아무 문자 1개a.c → abc, a1c, a_c
*앞 문자 0회 이상 반복ab*c → ac, abc, abbc
+앞 문자 1회 이상 반복ab+c → abc, abbc (ac은 불일치)
?앞 문자 0회 또는 1회colou?r → color, colour
\d숫자 (0-9)\d{3} → 123, 456
\w영숫자 + 밑줄\w+ → hello, user_01
[abc]a, b, c 중 하나[aeiou] → 모음
^문자열 시작^Hello → Hello로 시작하는 줄
$문자열 끝end$ → end로 끝나는 줄

자주 쓰는 패턴 5가지

1. 이메일 주소

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

@ 앞에 영숫자와 일부 특수문자, @ 뒤에 도메인, 마지막에 2자 이상의 영문자(com, kr 등)를 검증한다.

2. 한국 전화번호

^01[016789]-?\d{3,4}-?\d{4}$

010, 011, 016, 017, 018, 019로 시작하고, 하이픈은 있어도 되고 없어도 되게 -?로 처리한다.

3. 한글만 추출

[가-힣]+

완성된 한글 글자만 매칭한다. 자음/모음 낱자(ㄱ, ㅏ)는 포함되지 않는다. 낱자까지 잡으려면 [가-힣ㄱ-ㅎㅏ-ㅣ]로 확장하면 된다.

4. URL

https?://[\w.-]+(/[\w./?&=-]*)?

http 또는 https로 시작하고 도메인 뒤에 경로가 올 수 있는 구조다. 완벽한 URL 검증은 아니지만 대부분의 경우 충분하다.

5. 숫자에 쉼표 넣기 (치환)

\B(?=(\d{3})+(?!\d))

1000000을 1,000,000으로 바꿀 때 쓰는 패턴이다. 치환 문자열로 ,를 넣으면 된다.

패턴 테스트하는 법

정규식은 작성보다 검증이 중요하다. 의도하지 않은 문자열이 매칭되거나 빠지는 경우가 흔하다. 정규식 테스터에 패턴을 입력하고 테스트 문자열을 넣으면 매칭 결과가 실시간으로 하이라이트된다.

캡처 그룹별 매칭 내용과 위치 정보도 나오고, g/i/m/s 플래그를 토글로 바로 전환할 수 있어서 코드에 적용하기 전에 동작을 확인하기 좋다.

주의 정규식은 언어마다 문법이 조금씩 다르다. JavaScript, Python, Java에서 같은 패턴이 다르게 동작할 수 있다. 테스터 사이트는 대부분 JavaScript 엔진 기반이므로, 다른 언어에서 쓸 거라면 해당 언어 문서를 참고할 것.

정규식은 처음에 진입 장벽이 높지만, 기본 기호 10개만 외우면 대부분의 실무 패턴을 읽고 수정할 수 있다. 나머지는 테스트하면서 다듬으면 된다.