작업 히스토리 (History)
기록된 작업이 없습니다.

로그인하시면 작업 기록을 무제한으로 저장하고 여러 기기에서 동기화하여 사용할 수 있습니다.

TESTERDEBUGGERFORMATTING

정규식 테스터 & 디버거

정규 표현식을 실시간으로 테스트하고, 매칭된 텍스트와 캡처 그룹을 직관적으로 시각화 및 디버깅합니다.

정규 표현식 (Regular Expression)

//
플래그:
자주 쓰는 패턴:
테스트 문자열 (Test Text)0 자 / 1
매칭 미리보기 (Highlight Preview)0개 매칭됨
테스트 결과가 여기에 하이라이트 표시됩니다.

도구 설명 및 사용 방법

정규 표현식을 실시간으로 입력하고 다양한 테스트 대상 문자열에 적용해 보는 도구입니다. 정규식 파싱 오류에 대한 친절한 한국어 피드백과 함께 캡처 그룹 매칭 세부정보를 분석할 수 있습니다. ReDoS 위험 탐지에도 유용합니다.

사용 단계

1
상단 정규 표현식 입력란에 정규식 패턴과 플래그(g, i, m 등)를 입력합니다.
2
필요시 "자주 쓰는 패턴" 버튼을 눌러 이메일, 전화번호, IP 주소 등의 프리셋을 로드합니다.
3
테스트 문자열 영역에 검증할 텍스트를 기입하면, 매칭되는 구간들이 하이라이트 표시됩니다.
4
하단의 "상세 매칭 목록" 표를 통해 매치 구간의 인덱스와 캡처된 그룹 정보를 개별 확인합니다.

작동 원리 및 상세 설명

정규 표현식은 이론적으로 유한 오토마톤(Finite Automaton)으로 구현되며, 대부분의 현대 JS 엔진(V8, SpiderMonkey 등)은 NFA 기반 백트래킹 엔진을 사용합니다. 본 테스터는 브라우저의 RegExp 객체를 직접 사용하여 실시간으로 test(), exec(), matchAll() 결과를 시각화하고, 캡처 그룹 인덱스와 이름을 테이블로 보여줍니다. 주요 기능으로는 플래그(g, i, m, s, u, y) 지원, 자주 사용하는 패턴 프리셋, 매치 하이라이트, 그리고 상세 그룹 정보 제공이 있습니다. 특히 ReDoS(정규식 서비스 거부 공격) 위험을 이해하는 데도 도움이 됩니다. 모든 매칭 작업은 클라이언트 브라우저 내에서 즉시 실행되므로, 로그 파일의 민감한 문자열이나 개인정보가 포함된 테스트 케이스도 외부로 유출될 걱정 없이 안전하게 디버깅할 수 있습니다.

자주 묻는 질문 (FAQ)

복잡한 정규식에서 ReDoS(Catastrophic Backtracking) 위험이 있나요?
네. 중첩된 quantifier (예: (a+)+)와 특정 입력 패턴이 결합되면 엔진이 기하급수적인 시간을 소모할 수 있습니다. 본 도구는 브라우저 엔진(V8)을 사용하므로, 매우 위험한 패턴은 브라우저 자체가 느려지거나 멈출 수 있습니다. 서버에서 사용자 입력으로 regex를 실행할 때는 항상 타임아웃이나 안전한 엔진(re2, Rust regex)을 사용하세요.
캡처 그룹(capture group)과 비캡처 그룹(?: ...)의 차이는?
캡처 그룹은 match 결과에 포함되어 나중에 참조($1, $2 또는 groups 객체)할 수 있습니다. (?:...) 비캡처 그룹은 매칭은 하지만 결과에 포함되지 않아 성능과 메모리 측면에서 유리합니다. 필요하지 않으면 비캡처를 사용하는 습관을 들이세요.
테스트한 정규식과 입력 데이터가 외부에 노출되나요?
전혀 노출되지 않습니다. 모든 파싱, 매칭, 그룹 분석은 브라우저 메모리 내에서만 수행됩니다. 민감한 로그 패턴이나 개인정보가 포함된 테스트 데이터도 안전합니다.

코드 사용 예시

JavaScript에서 캡처 그룹으로 데이터 추출
javascript
const re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const match = '2026-06-15'.match(re);

if (match) {
  console.log(match.groups.year);  // 2026
  console.log(match.groups.month); // 06
  // 또는 numbered groups: match[1], match[2]...
}

// 실제 사용: 로그 파싱, URL 라우트 매칭, 입력 검증 등

도구로 패턴을 검증한 뒤, named capture groups를 활용해 실제 애플리케이션 코드에서 구조화된 데이터를 추출하는 패턴.