정규식 (Regular Expression) 은 ‘검색·추출·치환을 수학 같은 표현식으로 처리하는 도구’ 다. 문법이 짧지만 의미 밀도가 높아 처음에는 거의 외계어처럼 보인다. 이 글은 실무에서 쓰는 패턴 8개와 정규식을 헷갈리게 만드는 4가지 핵심 개념을 정리한다. 읽고 나면 90% 의 정규식 작업은 두렵지 않다.
핵심 개념 1 — 메타문자 vs 리터럴
대부분 문자는 ‘있는 그대로’ 매칭된다 (리터럴). 하지만 일부 문자는 특수한 의미를 가진다 (메타문자):
. ^ $ * + ? { } ( ) [ ] \ | /이 문자를 ‘있는 그대로’ 매칭하려면 앞에 백슬래시를 붙여 escape 한다.
/3.14/ → 3 + 임의문자 + 14 매칭 (점이 메타문자)
/3\.14/ → '3.14' 정확히 매칭핵심 개념 2 — 수량자 (Quantifier)
*— 0회 이상+— 1회 이상?— 0회 또는 1회{n}— 정확히 n회{n,}— n회 이상{n,m}— n회 이상 m회 이하
핵심 개념 3 — 문자 클래스
[abc]— a, b, c 중 하나[a-z]— 소문자 알파벳[^abc]— a, b, c 가 아닌 것\d— 숫자 [0-9]\w— 단어 문자 [a-zA-Z0-9_]\s— 공백 (스페이스, 탭, 줄바꿈).— 임의 문자 (줄바꿈 제외)
핵심 개념 4 — 앵커
^— 문자열 시작$— 문자열 끝\b— 단어 경계
이 4가지만 알면 정규식의 80% 가 보인다. 이제 실전 패턴.
실무 패턴 8개
1. 이메일 검증 (실용형)
/^[\w.+-]+@[\w.-]+\.[a-zA-Z]{2,}$/‘완벽한 이메일 정규식’ 은 RFC 5322 기준 1000자가 넘는다. 실무에서는 위 패턴이 99% 의 케이스를 잡는다.
2. 한국 휴대폰 번호
/^01[0-9]-?\d{3,4}-?\d{4}$/‘010-1234-5678’, ‘01012345678’ 모두 매칭. 최신 번호 (010, 011, 016, 017, 018, 019) 포함.
3. 한국 사업자등록번호
/^\d{3}-?\d{2}-?\d{5}$/형식만 검증. 실제 유효성은 가중치 [1,3,7,1,3,7,1,3,5] 검증식 별도 필요.
4. 날짜 (YYYY-MM-DD)
/^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/‘2026-13-45’ 같은 잘못된 월/일은 걸러지지만, ‘2026-02-30’ (윤년/말일) 까지는 정규식만으로는 한계.
5. URL (http/https)
/^https?:\/\/(?:[\w-]+\.)+[\w]{2,}(?:\/\S*)?$/6. 한국 주민등록번호 (형식)
/^\d{6}-[1-4]\d{6}$/실제 검증은 별도 알고리즘 필요. 보안상 절대 클라이언트에 평문 저장 X.
7. IP 주소 (IPv4)
/^(\d{1,3}\.){3}\d{1,3}$/8. 비밀번호 강도 (8자+, 영문+숫자+특수문자)
/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*])[\w!@#$%^&*]{8,}$/Lookahead ((?=...)) 로 ‘영문 1개 이상 + 숫자 1개 이상 + 특수문자 1개 이상’ 동시 검증.
플래그 (Flag)
i— 대소문자 무시g— 전체 매칭 (첫 번째만이 아니라 모두)m— 다중 줄 (^, $ 가 각 줄에서 동작)s— dotall (. 이 줄바꿈도 매칭)
JavaScript 사용 예시
// 매칭 여부
/^01[0-9]-?\d{4}-?\d{4}$/.test('010-1234-5678') // true
// 매칭 추출
'전화: 010-1234-5678'.match(/01[0-9]-?\d{4}-?\d{4}/)
// → ['010-1234-5678']
// 치환
'안녕 세상'.replace(/\s+/g, ' ') // '안녕 세상'
// 캡처 그룹
const m = '2026-04-15'.match(/^(\d{4})-(\d{2})-(\d{2})$/);
// m[1]=2026, m[2]=04, m[3]=15주의 — 정규식의 한계
- HTML/XML 파싱은 정규식으로 하지 마라. 파서 라이브러리 사용.
- 중첩 구조 (괄호 안의 괄호 등) 는 정규식이 못 잡는다.
- 탐욕적 (greedy) vs 게으른 (lazy) 매칭 —
.*와.*?는 다르게 동작. - 치명적 백트래킹 —
(a+)+b같은 패턴은 입력에 따라 무한 시간 걸릴 수 있음 (ReDoS 공격).
연습 도구
정규식은 ‘읽기보다 직접 써보는’ 게 훨씬 빠르다. 텍스트와 패턴을 입력하면 매칭 부분이 색칠되는 정규식 테스터로 실시간 확인하면서 익히는 게 가장 효과적이다.
정규식은 도구다. 모든 검증 문제를 정규식으로 풀 필요는 없다. 가독성이 중요하면 코드로 풀고, 간결한 패턴 매칭이 핵심이면 정규식을 써라.