본문 바로가기

정규식 테스터 - 정규표현식 실시간 테스트와 패턴 작성 완벽 가이드

정규표현식(RegExp)의 기초 문법부터 실시간 테스트, 실무에서 자주 쓰는 패턴 모음까지 정규식의 모든 것을 총정리합니다.


정규표현식이란?

정규표현식(Regular Expression, RegExp)은 문자열에서 특정 패턴을 찾거나 검증하거나 치환하는 데 사용되는 강력한 문자열 처리 도구입니다. 정규식 테스터를 사용하면 패턴을 입력하고 테스트 텍스트에 대해 실시간으로 매칭 결과를 확인할 수 있습니다.

1950년대 수학자 스티븐 클레이니가 정규 언어 이론에서 처음 소개한 이후, 현재 거의 모든 프로그래밍 언어, 텍스트 에디터, 데이터베이스에서 지원됩니다. 이메일 검증, 전화번호 추출, 로그 파싱, 금칙어 필터링 등 문자열 처리가 필요한 거의 모든 곳에서 활용됩니다.

기본 문법 정리

문자 클래스와 메타 문자

패턴의미매칭 예시
.줄바꿈 제외 모든 문자 1개a.c → abc, a1c, a c
\d숫자 [0-9]\d\d → 42, 99
\w단어 문자 [a-zA-Z0-9_]\w+ → hello, test_1
\s공백 문자 (스페이스, 탭, 줄바꿈)a\sb → a b, a b
[abc]a, b, c 중 하나[aeiou] → 모음 1개
[^abc]a, b, c가 아닌 문자[^0-9] → 숫자가 아닌 문자
[가-힣]한글 1글자[가-힣]+ → 한글단어

수량자 (Quantifiers)

패턴의미예시
*0회 이상 반복ab*c → ac, abc, abbc
+1회 이상 반복ab+c → abc, abbc (ac 제외)
?0회 또는 1회colou?r → color, colour
{n}정확히 n회\d{4} → 2025
{n,m}n회 이상 m회 이하\d{2,4} → 42, 123, 2025

앵커와 경계

^는 문자열/줄의 시작, $는 문자열/줄의 끝을 나타냅니다. \b는 단어 경계를 의미하여 \bcat\b는 "cat"은 매칭하지만 "category"의 cat은 매칭하지 않습니다.

정규식 테스터 사용법

패턴 입력과 실시간 매칭

온라인 정규식 테스터에 접속하면 상단에 정규식 패턴 입력란, 하단에 테스트 텍스트 입력란이 있습니다. 패턴을 입력하면 즉시 매칭되는 부분이 하이라이트되어 결과를 실시간으로 확인할 수 있습니다.

플래그 설정

플래그이름설명
gGlobal모든 매칭을 찾음 (첫 번째만 아님)
iCase-insensitive대소문자 구분 없음
mMultiline^와 $가 각 줄의 시작/끝에 매칭
sDotall.이 줄바꿈 문자도 매칭
uUnicode유니코드 지원 (한글 처리에 중요)

캡처 그룹 확인

괄호 ()로 감싼 부분은 캡처 그룹이 되어 별도로 추출됩니다. 테스터에서 각 그룹별 매칭 결과를 확인할 수 있어 복잡한 패턴의 동작을 이해하는 데 도움이 됩니다.

실무에서 자주 쓰는 패턴

이메일 주소 검증

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} — 기본적인 이메일 형식을 검증합니다. 완벽한 이메일 검증은 정규식만으로 어렵지만, 대부분의 일반적인 이메일 형식은 이 패턴으로 충분합니다.

한국 전화번호

01[016789]-\d{3,4}-\d{4} — 010, 011, 016, 017, 018, 019로 시작하는 한국 휴대폰 번호를 매칭합니다. 하이픈을 선택 사항으로 하려면 01[016789]-?\d{3,4}-?\d{4}를 사용하세요.

주민등록번호 패턴

\d{6}-[1-4]\d{6} — 주민등록번호 형식을 감지합니다. 개인정보 마스킹, 금칙 데이터 필터링 등에서 주민등록번호 패턴을 찾아 ******-*******로 치환하는 데 사용됩니다.

URL 매칭

https?://[\w.-]+(?:/[\w./?%&=-]*)? — http 또는 https로 시작하는 URL을 매칭합니다. 텍스트에서 URL을 자동으로 추출하여 링크로 변환할 때 사용합니다.

한글만 추출

[가-힣]+ — 한글 완성형 문자만 매칭합니다. 자음/모음도 포함하려면 [ㄱ-ㅎㅏ-ㅣ가-힣]+를 사용하세요. 정규표현식 검증 도구에서 직접 테스트해보세요.

HTML 태그 제거

<[^>]+> — HTML 태그를 매칭합니다. 텍스트에서 HTML을 제거하여 순수 텍스트만 추출할 때 사용합니다. 단, 복잡한 HTML 파싱에는 정규식보다 전용 파서를 권장합니다.

고급 기능과 기법

전방탐색과 후방탐색 (Lookahead/Lookbehind)

(?=패턴)은 긍정 전방탐색으로, 뒤에 특정 패턴이 오는 위치를 찾습니다. \d+(?=원)은 "1000원"에서 "1000"만 매칭합니다. (?<=\$)\d+은 "$500"에서 "500"만 매칭합니다.

비탐욕적 매칭 (Lazy/Non-greedy)

수량자 뒤에 ?를 붙이면 최소한으로 매칭합니다. <.+>는 "bold"에서 전체를 매칭하지만, <.+?>는 ""와 ""를 각각 매칭합니다.

명명된 캡처 그룹

(?<name>패턴)으로 그룹에 이름을 부여하면 코드에서 이름으로 접근할 수 있습니다. 예: (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})로 날짜의 연/월/일을 이름으로 추출합니다.

정규식 작성 팁

단순하게 시작하기

처음부터 복잡한 패턴을 작성하지 말고, 핵심 매칭부터 시작하여 점진적으로 조건을 추가하세요. 테스터에서 각 단계를 확인하면 실수를 줄일 수 있습니다.

테스트 데이터 다양하게 준비

정상적인 입력뿐 아니라 경계 케이스(빈 문자열, 특수문자, 매우 긴 문자열 등)도 테스트하세요. 정규식이 의도하지 않은 문자열을 매칭하거나, 의도한 문자열을 놓치지 않는지 확인합니다.

성능 주의

(a+)+ 같은 중첩된 수량자는 재앙적 역추적(catastrophic backtracking)을 유발할 수 있습니다. 큰 입력에 대해 정규식이 매우 느려지거나 멈출 수 있으므로, 수량자 중첩을 피하고 가능하면 원자 그룹이나 소유적 수량자를 사용하세요.

자주 묻는 질문

Q. 정규식으로 완벽한 이메일 검증이 가능한가요?

RFC 5322 표준을 완벽히 구현하는 정규식은 수천 자에 달할 만큼 복잡합니다. 실무에서는 기본적인 형식 검증만 정규식으로 하고, 최종 검증은 실제 인증 이메일을 보내는 것이 권장됩니다.

Q. 정규식 학습에 가장 좋은 방법은?

온라인 정규식 테스터에서 직접 패턴을 입력하고 결과를 확인하면서 배우는 것이 가장 효과적입니다. 작은 패턴부터 시작하여 점진적으로 복잡도를 높여가세요.

Q. 정규식이 너무 느려요. 어떻게 하나요?

역추적이 많이 발생하는 패턴이 원인일 수 있습니다. .* 대신 [^특정문자]*로 범위를 제한하고, 중첩 수량자를 피하세요. 매우 큰 텍스트에서는 정규식 대신 문자열 함수(indexOf, includes 등)가 더 빠를 수 있습니다.

Q. 프로그래밍 언어마다 정규식 문법이 다른가요?

기본 문법은 대부분 동일하지만 세부적으로 차이가 있습니다. 전방탐색/후방탐색 지원 여부, 유니코드 처리 방식, 플래그 이름 등이 언어마다 다를 수 있습니다. 테스터에서 작성한 패턴을 실제 코드에서 확인하는 것이 안전합니다.

3일 무료체험큰손탐지기, 지금 바로 시작하세요

설치 없이 웹에서 바로 사용 가능 · PC & 모바일 지원

무료체험 시작
카카오톡 상담