정규표현식을 처음 접하면 /^[a-zA-Z0-9]+$/ 같은 패턴이 암호문처럼 보인다. 막상 작성해도 의도대로 동작하는지 확인하려면 코드를 실행해봐야 하는데, 테스터를 쓰면 입력 즉시 결과가 나온다.
자주 쓰는 정규식 패턴
| 용도 | 패턴 | 설명 |
|---|---|---|
| 이메일 | [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} | 기본 이메일 형식 검증 |
| 전화번호 | 01[016789]-?\d{3,4}-?\d{4} | 한국 휴대폰 번호 |
| 한글만 | [가-힣]+ | 한글 문자만 매칭 |
| 숫자만 | ^\d+$ | 숫자로만 구성된 문자열 |
이 패턴들은 기본형이라 실제 서비스에서는 더 정밀한 검증이 필요할 수 있다. 이메일의 경우 RFC 5322 전체 스펙을 정규식으로 표현하면 수백 자가 넘기 때문에, 실무에서는 기본 형태만 걸러내고 실제 발송으로 최종 확인하는 방식을 쓴다.
플래그 옵션 이해하기
g(global)- 첫 번째 매치에서 멈추지 않고 전체 텍스트에서 모든 매치를 찾는다.
i(ignore case)- 대소문자를 구분하지 않는다.
/hello/i는 Hello, HELLO도 매치. m(multiline)^와$가 전체 문자열이 아닌 각 줄의 시작과 끝에서 작동한다.s(dotAll)- 점(
.)이 줄바꿈 문자까지 포함해서 매치한다.
캡처 그룹 활용
괄호 ()로 감싼 부분은 캡처 그룹이 되어 매치된 값을 따로 추출할 수 있다.
예시 패턴:(\d{4})-(\d{2})-(\d{2})
입력: "오늘은 2026-03-01입니다"
→ 그룹1: 2026, 그룹2: 03, 그룹3: 01
날짜, 전화번호, URL에서 특정 부분만 뽑아낼 때 유용하다.
패턴 실시간으로 테스트하기
정규식은 한 글자만 틀려도 완전히 다른 결과가 나온다. 정규식 테스터에 패턴과 테스트 문자열을 넣으면 매치되는 부분이 실시간으로 하이라이트된다. 캡처 그룹별 값, 매치 인덱스까지 상세 정보가 나와서 디버깅이 빠르다.
코드에 넣기 전에 테스터에서 한 번 확인하는 습관을 들이면 실수가 확 줄어든다.