정규식 테스터
정규식 테스터
정규식의 실시간 매칭 테스트를 지원하며, 플래그 제어, 캡처 그룹 분석, 명명된 그룹 및 즉시 치환 미리보기를 제공합니다. 성능 위험 감지와 시간 초과 보호를 포함하며, 패턴 검증, 텍스트 추출 및 일괄 치환에 적합합니다.
빠른 시작
자주 쓰는 활용 사례
로그 및 텍스트에서 ID, 이메일, 날짜 또는 사용자 정의 토큰을 추출합니다.
코드에 통합하기 전에 사용자 입력 형식의 유효성을 검사하세요.
캡처 그룹과 명명된 그룹을 사용하여 콘텐츠를 일괄 교체합니다.
활용 팁
제한 사항 및 호환성
개인정보 보호 및 보안
자주 묻는 질문
정규 표현식(Regular Expression, 줄여서 regex)은 특정 구문으로 텍스트 패턴을 기술하는 도구입니다. '고급 검색'이라고 생각하면 됩니다 — 고정된 단어가 아니라 특정 규칙에 맞는 모든 텍스트를 검색합니다.\n\n예를 들어 \\d{4}-\\d{2}-\\d{2}는 모든 '연-월-일' 형식의 날짜를 매칭하고, [\\w.]+@[\\w.]+는 이메일 주소를 매칭합니다. 정규식은 텍스트 검색·추출, 형식 검증, 일괄 치환에 널리 사용됩니다.\n\n거의 모든 프로그래밍 언어와 도구(VS Code, grep, sed)가 정규식을 지원합니다. 이 도구는 JavaScript RegExp 엔진을 사용합니다.
JavaScript 정규식은 기본적으로 첫 번째 매칭만 반환합니다. 이는 도구의 제한이 아닌 언어 사양입니다. 플래그 바에서 g를 클릭하여 전역 검색을 활성화하세요.\n\ng와 y의 상호작용에 주의하세요: g는 텍스트 전체를 스캔하지만, y(스티키)는 이전 매칭 바로 뒤에서 시작해야 합니다. 보통 g만 켜면 충분합니다.
네 가지 주요 원인:\n\n1. 괄호 불일치: (에 대응하는 ), [에 대응하는 ]이 필요합니다.\n2. 수량자 위치 오류: *, +, ?, {n}은 수량화 가능한 요소 뒤에 와야 합니다.\n3. 이스케이프 미완성: 끝의 단독 \\은 잘못된 것입니다.\n4. Unicode 속성에 u 플래그 필요: \\p{L} 등은 u 플래그 없이 오류가 발생합니다.
JavaScript String.prototype.replace()에서 정의된 치환 참조 구문입니다:\n\n- $1~$99: n번째 캡처 그룹의 내용\n- $&: 전체 매칭 텍스트\n- $`: 매칭 위치 앞의 텍스트\n- $': 매칭 위치 뒤의 텍스트\n- ${name}: 명명된 그룹의 내용\n\n예: (\\w+)\\s(\\w+)로 'hello world'를 매칭하고 $2-$1로 치환하면 'world-hello'가 됩니다.
타임아웃은 거의 '재앙적 역추적'이 원인입니다. 중첩 수량자(예: (a+)+b)가 있으면 엔진이 지수적 조합을 시도합니다.\n\n위험한 패턴: (a+)+, (.*?)*, (.+)+$ 등. 해결법:\n1. . 대신 [^\\s]+ 등 정확한 문자 클래스 사용\n2. 중첩 수량자 제거: (a+)+ → a+\n3. 중복 선택 경로 줄이기\n\n패턴 수정 후 '재시도' 버튼으로 다시 테스트하세요. 4초 타임아웃 보호가 있습니다.
언어별 정규식 엔진에는 세 가지 주요 차이가 있습니다:\n\n1. 구문 지원 범위: JavaScript는 PCRE의 재귀 (?R), 조건 분기, 원자 그룹을 지원하지 않습니다.\n2. Unicode 처리: Python 3은 기본적으로 Unicode로 \\w, \\d를 처리하지만, JavaScript는 ASCII 기본입니다(u 플래그 필요).\n3. 줄바꿈 처리: Python의 .은 기본적으로 \\n을 매칭하지 않습니다(JavaScript와 동일).\n\n이 도구에서 로직 확인 후 대상 언어의 엔진으로 최종 검증하세요.