정규식 테스터
정규식을 실시간으로 테스트: 매치 강조·그룹·치환
\d \w \s숫자·단어 문자·공백^ $ \b시작·끝·단어 경계* + ? {n,m}0+·1+·선택·범위(…) (?:…) (?<name>…)캡처·비캡처·명명[abc] [^abc] [a-z]하나·제외·범위a|b (?=…) (?!…)선택·전방탐색통제된 치명적 백트래킹(Catastrophic backtracking)
(a+)+$와 같은 중첩된 수량자(quantifier)는 매처가 지수적으로 많은 경로를 탐색하게 만들 수 있습니다 — 이는 고전적인 ReDoS(Regular Expression Denial of Service) 위험입니다:
- 이 테스터는 사용자의 패턴을 작업자(worker) 내에서 실행하며, 단계 수 제한(step budget)을 두어 무한 루프에 빠진 매치를 강제 중단하고 이를 보고합니다. 따라서 탭이 멈추는 현상은 발생하지 않습니다.
- 중단 메시지를 본 경우, 해당 패턴은 실제 프로덕션 환경에서도 위험합니다. 서버 타임아웃을 늘리는 것만으로는 이차적(quadratic) 엔진 루프 문제를 해결할 수 없습니다.
- 대개 효과적인 수정 방법: 내부 그룹을 명확하게 만들기(모호성 제거), 양쪽 끝을 앵커링(anchor)하기, 욕심내는 중첩(greedy nesting)을 문자 클래스로 대체하기.
이 테스터가 패턴을 안전하게 실행하는 방식
실시간 매치 하이라이트
패턴, 테스트 문자열, 치환 문자열이 입력 즉시 갱신됩니다. 매치는 교차 색상으로 강조되고 개수도 새로 고쳐지며, 치환 미리보기는 $1과 $<name> 같은 명명 그룹 구문을 지원합니다.
위치가 표시되는 그룹
각 매치는 번호와 이름이 붙은 캡처 그룹, 값, 문자 위치까지 펼쳐져 보이므로 패턴을 배포하기 전에 어떤 부분이 무엇을 캡처했는지 명확해집니다.
플래그·라이브러리·레퍼런스
g, i, m, s, u, y 플래그는 클릭 한 번이며, 이메일·URL·IPv4·날짜·16진수 색상·전화번호를 다루는 여섯 가지 패턴, 앵커·수량자·그룹·전방탐색을 설명하는 문법 레퍼런스가 준비되어 있습니다.
자주 묻는 질문
어떤 정규식 방언을 사용하나요?
브라우저에 내장된 JavaScript(ECMAScript) 엔진입니다. 구문 대부분은 PCRE와 공통이지만 일부 다릅니다(소유 수량자 없음, 후방탐색은 최신 브라우저 필요 등). 여기서 테스트한 패턴은 JS 코드에서도 동일하게 동작합니다.
제 텍스트가 어딘가로 전송되나요?
아니요. 매칭·그룹화·치환은 모두 브라우저의 네이티브 RegExp로 로컬에서 실행되어 패턴과 테스트 데이터가 페이지를 벗어나지 않습니다. 오프라인에서도 동작합니다.
정규식이 페이지를 멈추게 할 수 있나요?
병적인 패턴(파국적 백트래킹)은 느려질 수 있지만 본인 탭에만 영향을 줍니다. 제로 폭 매치를 진행하고 결과를 1만 개로 제한해 UI 응답성을 유지합니다. 긴 입력에는 (a+)+ 같은 중첩 수량자 대신 구체적인 패턴을 권장합니다.
왜 어떤 입력에서는 패턴이 멈춰버리고, 다른 입력에서는 정상적으로 작동하나요?
백트래킹 비용은 입력 문자열의 길이뿐 아니라 모양(shape)에도 따라 달라집니다. 예를 들어 <code>aaaa...b</code>는 <code>(a+)+b</code>와 매치할 때 폭발적으로 증가하지만, <code>aab</code>는 즉시 완료됩니다. 공격자는 이러한 경로적(pathological) 문자열을 정확히 조작해 공격하므로, 사용자에게 노출되는 정규식을 출시하기 전에 긴 동일 문자 반복 문자열로 테스트해야 합니다.
관련 도구
정규식 테스터란 무엇인가요?
정규식은 텍스트 검색과 치환에 없어서는 안 될 강력한 도구이면서, 동시에 프로그래밍에서 가장 실수하기 쉬운 영역이기도 합니다. 백슬래시 하나가 어긋나도 매치 결과가 바뀌고, 머릿속으로 옳게 보인 패턴도 실제 데이터 앞에서는 뜻밖의 결과를 내기 일쑤입니다. 이 테스터는 패턴이 실제로 무엇을 하는지 실시간으로 보여 줍니다. 테스트 문자열의 모든 매치가 즉시 강조 표시되고, 번호·이름이 있는 캡처 그룹이 위치와 함께 분해되며, $1이나 $
이 도구로 할 수 있는 일
- 🔦 입력하는 즉시 모든 매치를 실시간으로 강조
- 🧩 번호·이름 있는 캡처 그룹을 위치와 함께 분해
- 🔁 $1 / $
문법으로 치환 미리보기 - 🚩 g·i·m·s·u·y 플래그 지원
- 📚 이메일·URL·IPv4·날짜·색상·전화 패턴 라이브러리
- 📖 문법 참조 표 내장
언제 유용할까
- 폼 필드용 검증 정규식을 작성할 때
- 매치가 너무 많거나 적은 원인을 찾을 때
- 캡처 그룹에 의존하는 텍스트 처리 스크립트를 만들 때
- 커뮤니티의 기성 패턴을 운영에 쓰기 전에 확인할 때
개인정보: 패턴과 테스트 문자열은 모두 브라우저 안에서 평가되며, 업로드나 기록이 이루어지지 않습니다. 무료로 사용할 수 있습니다.