무료 변환기

정규식 테스터

브라우저에서 즉시 정규식을 테스트하고 디버그하세요. 일치 항목을 강조 표시하고, 캡처 그룹을 보고, 교체 모드를 사용하세요(무료 및 비공개).

//g
플래그:

이 도구에 대하여

정규식은 텍스트의 패턴을 일치시키기 위한 도메인별 언어입니다. 이는 1968년부터 컴퓨팅의 일부였으며 이제 모든 최신 프로그래밍 언어, 텍스트 편집기 및 명령줄 검색 도구에 내장되어 있습니다. 구문은 간결하지만 오류가 발생하기 쉽습니다. 작은 변경으로 인해 일치 동작이 미묘하게 달라지고 복잡한 표현식은 금방 읽을 수 없게 됩니다. 패턴을 편집하면서 일치 항목을 실시간으로 보여주는 테스터는 정규식을 개발하고 검증하는 가장 효과적인 방법입니다.

이 테스터는 JavaScript 정규식 엔진(애플리케이션이 브라우저에서 실행되는 경우 사용하는 것과 동일)을 사용하여 브라우저에서 실행됩니다. 패턴과 테스트 텍스트는 반응적으로 업데이트됩니다. 둘 중 하나를 변경할 때마다 일치가 다시 실행됩니다. 일치 그룹이 강조 표시되고, 캡처된 그룹이 나열되며, 플래그(대소문자 구분, 여러 줄, 전역)가 테스트를 위해 노출됩니다.

정규식 구문은 엔진마다 미묘하게 다릅니다. JavaScript는 ECMAScript 사양을 따릅니다. Python, PCRE(PHP 및 기타 여러 곳에서 사용), Java 및 Go에는 각각 중복되지만 동일하지 않은 기능이 있는 고유한 방언이 있습니다. 여기에서 개발된 패턴은 ECMAScript 구문을 사용합니다. 엔진 간 이식성을 위해서는 각 대상의 문서를 확인해야 합니다.

정규식 테스터를 사용하는 이유

정규식 버그는 배포 후 디버깅하기가 매우 어렵습니다. 합리적으로 보이는 패턴은 의도한 것보다 더 많거나 적게 일치할 수 있고, 극단적인 경우에 실패하거나 특정 입력에서 치명적인 역추적을 일으킬 수 있습니다. 대표 입력에 대해 대화형으로 패턴을 테스트하면 코드 검토 및 생산 전에 문제를 포착할 수 있습니다.

패턴은 문서화의 이점도 있습니다. 일치해야 하는 입력과 일치하지 않아야 하는 입력과 함께 정규식을 표시하면 의도가 명시적으로 드러납니다. 미래의 유지관리자(6개월 후의 귀하 포함)는 영리한 한 줄의 테스트 사례보다 문서화된 테스트 사례를 더 높이 평가합니다.

사용 방법

패턴을 입력하고, 테스트 입력을 입력하고, 실시간으로 강조 표시된 일치 항목을 확인하세요.

  1. 패턴을 입력하세요: 패턴 필드에 정규식 패턴을 입력합니다. 리터럴 정규식(/pattern/flags)과 패턴 전용 형식이 모두 작동합니다. 플래그는 플래그 입력을 통해 설정할 수 있습니다.
  2. 테스트 입력 추가: 패턴이 일치해야 하는 샘플 텍스트를 붙여넣습니다(이상적으로는 일치하지 않아야 하는 텍스트도 붙여넣습니다). 테스터는 입력에 대해 패턴을 실행하고 일치 항목을 강조 표시합니다.
  3. 플래그 설정: 공통 플래그: g(전역, 모든 일치 항목 찾기), i(대소문자 구분 안 함), m(여러 줄, ^ 및 $ 일치 줄 시작/끝), s(점수, . 개행과 일치), u(유니코드).
  4. 결과 검사: 각 일치 항목이 입력에서 강조 표시됩니다. 캡처 그룹은 그룹 인덱스 및 값과 함께 목록에 나타납니다. 테스터는 패턴의 일치 항목 수와 컴파일 오류도 표시합니다.

일반적인 사용 사례

기술적인 세부사항

JavaScript 정규식은 ECMAScript 사양을 따릅니다. 주요 기능: 문자 클래스([abc], [^abc]), 수량자(*, +, ?, {n,m}), 대체(|), 그룹화((...)), 캡처 및 비캡처 그룹, 미리보기 및 뒤보기(최신 엔진), 역참조, 명명된 그룹, 유니코드 속성 이스케이프(u 플래그 사용) 및 표준 이스케이프 시퀀스 세트.

PCRE 및 Python과의 중요한 차이점: Lookbehind 지원은 최근 JavaScript(2018+)에서 지원됩니다. 명명된 그룹은 (?<name>...) 구문을 사용합니다. 일부 유니코드 이스케이프는 올바르게 작동하려면 u 플래그가 필요합니다. 언어 간 사용을 위한 패턴은 각 대상의 문서를 참조하여 확인해야 합니다.

성능: 역추적 기반 정규식 엔진(대부분 JavaScript 포함)은 특정 병리학적 패턴에 대해 치명적인 역추적을 가질 수 있습니다. 테스터를 정지시키는 테스트는 일반적으로 중첩된 수량자 및 모호한 교체를 피함으로써 패턴을 단순화해야 한다는 신호입니다.

모범 사례

자주 묻는 질문

이 도구는 어떤 정규식 버전을 지원합니까?
이는 미리보기, 뒤돌아보기(최신 브라우저의 경우), 명명된 캡처 그룹 및 유니코드 속성 이스케이프를 포함한 표준 구문을 지원하는 JavaScript의 내장 RegExp 엔진을 사용합니다.
정규식 대체를 테스트할 수 있나요?
예. 교체 패턴을 입력하려면 교체 모드로 전환하세요. 캡처 그룹 역참조에는 $1, $2 등을 사용할 수 있고 명명된 그룹에는 $<name>을 사용할 수 있습니다.
내 정규 표현식이 Python/PHP와 다르게 일치하는 이유는 무엇입니까?
프로그래밍 언어마다 정규식 엔진이 약간 다릅니다. JavaScript는 소유 수량자 또는 일부 PCRE 관련 기능을 지원하지 않습니다. 핵심 구문(문자 클래스, 수량자, 그룹)은 모든 언어에서 동일합니다.
도구가 내 정규식 패턴을 저장합니까?
아니요. 아무것도 저장되거나 전송되지 않습니다. 이 도구는 브라우저에서 완전히 실행됩니다. 정규식 문자열을 복사하여 패턴을 북마크에 추가하거나 공유할 수 있습니다.
리터럴 특수 문자를 어떻게 일치시키나요?
백슬래시로 이스케이프 처리하세요. 리터럴 점과 일치시키려면: \. 리터럴 백슬래시와 일치시키려면: \\. 문자 클래스 [...] 내에서는 대부분의 특수 문자가 의미를 잃습니다.
테스터가 서버에서 실행되고 있나요?
아니요. 패턴 컴파일 및 일치는 기본 RegExp 개체를 사용하여 브라우저에서 수행됩니다.
JavaScript가 아닌 엔진의 패턴을 테스트할 수 있나요?
주로. 단순한 패턴의 경우 주요 엔진이 동의합니다. 고급 기능(뒤돌아보기, 원자 그룹, 소유 수량자, 유니코드 속성 이스케이프)의 경우 대상 엔진의 문서를 확인하세요.
매우 큰 입력을 처리합니까?
최대 몇 메가바이트까지 원활하게 작동합니다. 입력이 크면 브라우저 속도가 느려지거나 중단될 수 있습니다. 특히 패턴이 역추적되기 쉬운 경우 더욱 그렇습니다.