본문으로 건너뛰기
AZ Tools

정규식 테스터

정규식을 쓰고 플래그를 켜면 입력하는 즉시 테스트 문자열에서 모든 일치가 강조되어 보입니다. 일치마다 캡처 그룹이 나열되고 치환 미리보기가 나란히 실행되므로, 패턴이 무엇을 찾는지와 무엇을 만들어 내는지를 동시에 확인할 수 있습니다. 엔진은 브라우저 자체의 JavaScript RegExp입니다. 즉 여기서 보는 결과가 실제 코드의 동작과 정확히 같습니다 — JavaScript가 PCRE·Python·Go와 다르게 동작하는 지점까지 포함해서요. 어디로도 전송되지 않습니다. 패턴과 테스트 데이터가 페이지 안에 머무르며, 디버깅 중인 샘플이 실제 데이터일 때 이 점이 중요합니다.

플래그
매치2 건
Contact me at jane@example.com or john@test.io for details.
  • #1 @14jane@example.com
  • #2 @34john@test.io
치환 미리보기
Contact me at [redacted] or [redacted] for details.

사용법

  1. 정규식 패턴을 입력하세요(슬래시 없이).
  2. 플래그를 토글하세요: g(전역), i(대소문자 무시), m(다중행), s(dotall), u(유니코드).
  3. 테스트 문자열을 입력/붙여넣으면 매치가 강조됩니다.
  4. 치환 문자열을 입력해 결과 미리보기를 확인하세요.

자주 묻는 질문

어떤 정규식 문법을 쓰나요?
자바스크립트(ECMAScript) 정규식입니다. 최신 브라우저에서는 lookbehind, 이름 그룹, 유니코드 속성 이스케이프도 지원됩니다.
치환에서 캡처 그룹 참조는?
$1, $2, 전체 매치는 $&, 이름 그룹은 $<name> 형식을 사용하세요.
매치 제한이 있나요?
UI 반응성을 위해 최대 10,000회 반복까지 캡처하며, 매치 목록에는 50개까지 표시합니다.
데이터가 전송되나요?
아니요. 패턴과 테스트 문자열은 브라우저에서만 실행되며 자동 저장은 로컬 저장소에만 보관됩니다.
패턴을 넣으면 페이지가 멈추는 이유는?
거의 확실히 파국적 백트래킹입니다. (a+)+b 같은 식으로 수량자를 중첩하면, 엔진이 일치가 없다고 인정하기 전까지 입력을 쪼개는 경우의 수를 지수적으로 훑게 됩니다. 해결책은 안쪽을 모호하지 않게 만드는 것이고, 보통 탐욕적인 .* 를 구분자와 겹칠 수 없는 부정 문자 클래스로 바꿉니다.
전역(g) 플래그는 실제로 무엇을 바꾸나요?
g가 없으면 첫 결과에서 매칭이 멈춥니다. g가 있으면 문자열 전체로 탐색이 이어지며, 일치 목록이 하나보다 길어지는 이유가 이것입니다. 동시에 실제 코드에서는 정규식이 상태를 갖게 됩니다 — 어디서 멈췄는지를 기억하기 때문입니다. 반복문에서 재사용한 패턴이 한 칸씩 건너뛰는 것처럼 보이는 흔한 원인이 바로 그것입니다.
여러 줄에 걸쳐 매칭하려면?
서로 다른 두 플래그가 관여하고 혼동하기 쉽습니다. multiline은 앵커의 의미를 바꿔 ^와 $가 문자열 양 끝뿐 아니라 모든 줄바꿈에서도 일치하게 합니다. dotAll은 점이 무엇에 일치하는지를 바꿔 줄바꿈까지 포함하게 합니다. 패턴이 첫 줄 끝에서 멈춘다면 대개 필요한 것은 dotAll입니다.

이 주제의 가이드

관련 도구