유틸리티

정규식 기초와 자주 쓰는 패턴 정리 (이메일, 전화번호)

회원가입 폼에서 이메일 형식이 맞는지 확인하려면 @ 앞뒤로 뭐가 와야 하는지 조건을 걸어야 한다. if문으로 일일이 체크하면 코드가 길어지고, 이때 정규표현식 한 줄이면 끝난다. 문제는 그 한 줄이 처음 보면 암호문처럼 보인다는 점이다.

정규식 기초 문법

기호의미예시
.아무 문자 1개a.c → abc, aXc
*앞 문자 0회 이상ab*c → ac, abc, abbc
+앞 문자 1회 이상ab+c → abc, abbc (ac는 불일치)
?앞 문자 0 또는 1회colou?r → color, colour
\d숫자 1개\d{3} → 010, 123
\w영문/숫자/밑줄\w+ → hello, user_1
[...]문자 클래스[a-z] → 소문자 1개
^ / $시작 / 끝^hello$ → 정확히 "hello"만

실무에서 바로 쓰는 패턴

이메일 검증

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

@ 앞에 영문/숫자/일부 특수문자, @ 뒤에 도메인, 마지막에 최소 2자리 최상위 도메인이 오는 구조다.

한국 전화번호

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

010, 011, 016 등으로 시작하고 하이픈은 있어도 없어도 매칭된다.

한글만 추출

[가-힣]+

유니코드 범위로 한글 완성형 글자만 걸러낸다. 자음/모음만 있는 문자(ㄱ, ㅏ)는 포함되지 않는다.

패턴을 바로 테스트하는 법

정규식은 머릿속으로 돌려보기 어렵다. 패턴을 작성한 뒤 예상 입력을 넣어보고, 매칭이 의도대로 되는지 확인하는 과정이 필수다. 정규식 테스터에서 패턴과 테스트 문자열을 입력하면 매칭된 부분이 실시간으로 하이라이트 표시된다. g, i, m, s 플래그도 토글로 켤 수 있고, 캡처 그룹별 매칭 결과와 인덱스 위치까지 상세하게 보여준다. 이메일, URL, 전화번호 같은 프리셋 패턴도 제공하니 처음부터 작성하기 부담스러울 때 참고하기 좋다.

주의 이 도구는 JavaScript 정규식 엔진 기반이다. Python, Java 등 다른 언어에서는 일부 문법(lookbehind, 유니코드 처리 등)이 다를 수 있으니, 실제 코드에 적용하기 전에 해당 언어 환경에서 한 번 더 확인하는 게 안전하다.