본문으로 건너뛰기

정규식 테스트

JavaScript 정규식을 내 텍스트에 바로 적용해 보세요. 일치 항목 강조, 캡처 그룹, 쉬운 말 설명까지 브라우저에서 실시간으로 확인할 수 있어요.

JavaScript(ECMAScript) 정규식 방식브라우저, Node.js, Deno와 같은 엔진이에요
//g

$1 또는 $<name>은 그룹, $&는 일치한 전체, $`와 $'는 일치 부분 앞뒤의 텍스트, $$는 달러 기호를 넣어요.

일치 항목과 캡처 그룹이 여기에 표시돼요.

브라우저에서 실행 · 업로드 없음작동 방식

정규식 테스터 사용 방법

  1. 1

    패턴 입력

    슬래시 없이 정규식을 입력하세요. 플래그는 아래 토글에서 선택해요.

  2. 2

    테스트 문자열 추가

    검색할 텍스트를 붙여넣으세요. 입력하는 동안 일치 항목이 강조되고 캡처 그룹과 함께 목록에 나타나요.

  3. 3

    설명 확인

    설명 탭을 열어 각 토큰을 쉬운 말로 읽고, 패턴이 실제로 무엇을 하는지 확인하세요.

  4. 4

    바꾸기 미리보기

    $1 또는 $<name>을 사용해 바꿀 내용을 입력하면 결과가 보여요. 그다음 코드 탭에서 코드를 복사하세요.

제한 및 Pro

회원가입 없이 무료: 일치 항목은 최대 100,000개까지 세고, 2,000개까지 강조하며, 표에는 200개까지 보여줘요. 강조 표시는 200,000자까지의 테스트 문자열에 적용되고, 한 번 실행하면 1.5초 뒤에 중단돼요.

Pro는 광고를 없애줘요. 테스트 도구의 동작은 모든 요금제에서 같아요. Pro 보기

정규식 테스터 소개

이 테스트 도구는 브라우저에 내장된 JavaScript(ECMAScript) 정규식 엔진으로 패턴을 실행해요. Node.js, Deno, Bun, 그리고 모든 웹 페이지가 쓰는 엔진과 같아서, 여기서 일치하는 결과는 코드에서도 똑같이 일치해요. 패턴과 테스트 문자열을 입력하면 입력하는 동시에 모든 일치 항목이 강조 표시돼요. 위치 표, 번호가 붙은 캡처 그룹과 이름 있는 그룹도 볼 수 있고, d 플래그를 켜면 각 그룹의 시작과 끝도 나와요.

플래그 여덟 개를 모두 켜고 끌 수 있어요. g는 모든 일치 항목, i는 대소문자 무시, m은 ^와 $를 줄 단위로 적용, s는 마침표가 줄바꿈까지 일치, u는 전체 Unicode와 \p{…} 속성 이스케이프, v는 대괄호 안에서 교집합과 차집합을 쓰는 Unicode 집합, y는 sticky 일치, d는 인덱스예요. 바꾸기 입력란에서는 $1, $<name>, $& 같은 치환 토큰을 쓴 String.prototype.replace 결과를 미리 볼 수 있고, 코드 탭에서는 리터럴, matchAll, RegExp() 스니펫을 제공해요.

설명 탭은 패턴을 토큰 단위로 나누어 그룹, 전방·후방 탐색, 문자 클래스, 수량자(탐욕적인지 게으른지 포함)가 하는 일을 쉬운 말로 알려줘요. 치트 시트에서는 자주 쓰는 토큰을 커서 위치에 넣을 수 있어요.

일치 검사는 백그라운드 Web Worker에서 1.5초 제한으로 실행돼요. 긴 a 문자열에 (a+)+b를 적용하는 것처럼 역추적이 폭발하는 패턴은 탭이 멈추지 않도록 설명과 함께 중단돼요. PCRE, Python, .NET용 패턴은 수정이 필요할 수 있어요. 소유적 수량자, 원자 그룹, 재귀, \A, \Z는 JavaScript에 없어요.

개인정보 보호

패턴과 테스트 문자열은 이 브라우저 탭 안에만 있어요. 일치 검사는 로컬 Web Worker에서 이루어지고, 입력한 내용은 업로드되거나 기록되거나 저장되지 않아요. 실제 로그나 고객 데이터로 테스트해도 안전해요.

기능

진짜 JS 엔진

v 플래그 집합과 이름 있는 그룹을 포함해 브라우저와 Node.js의 RegExp와 똑같이 일치해요.

토큰별 설명

모든 그룹, 클래스, 앵커, 수량자를 쉬운 말로 설명해요.

역추적 보호

일치 검사는 1.5초 제한이 있는 워커에서 실행돼서, 잘못된 패턴이 페이지를 멈추게 하지 못해요.

정규식 테스터: 자주 묻는 질문

이 테스트 도구는 어떤 정규식 방식을 쓰나요?
ECMAScript 표준에 정의되고 지금 쓰는 브라우저가 구현한 JavaScript 방식이에요. 후방 탐색, 이름 있는 그룹, Unicode 속성 이스케이프, v 플래그를 지원하지만 소유적 수량자, 원자 그룹, 재귀, 조건문 같은 PCRE 기능은 지원하지 않아요. Python의 (?P<name>…) 문법은 여기서 (?<name>…)로 써야 해요. 같은 엔진 버전의 Node.js, Deno와 결과가 같아요.
패턴이 왜 첫 번째 일치 항목만 찾나요?
g 플래그가 없으면 JavaScript는 첫 번째 일치 후 멈춰요. exec와 match는 결과를 하나만 돌려주고 replace도 처음 나온 항목만 바꿔요. 모든 일치 항목을 찾고 바꾸려면 g를 켜세요. sticky y 플래그는 달라요. 이전 일치가 끝난 정확한 위치에서만 일치해서 토크나이저에 유용해요.
치명적 역추적이란 무엇인가요?
(a+)+나 (.*)*처럼 중첩된 수량자 때문에 같은 텍스트를 여러 방식으로 일치시킬 수 있으면, 일치에 실패할 때 엔진이 모든 조합을 시도해요. 이는 입력 길이에 따라 기하급수적으로 늘어나요. 여기서는 1.5초 후 경고와 함께 중단돼요. 쉼표 앞에 .* 대신 [^,]*처럼 선택지가 서로 겹치지 않게 만들어 해결하세요.
바꿀 내용에서 캡처 그룹은 어떻게 쓰나요?
번호가 붙은 그룹은 $1, $2처럼 쓰고, (?<year>\d{4})처럼 이름 있는 그룹은 $<name>으로 써요. $&는 전체 일치 부분, $`는 그 앞의 텍스트, $'는 그 뒤의 텍스트를 넣고, $$는 달러 기호 자체를 만들어요. 예제 사용을 누르면 이 방식으로 연, 월, 일의 순서를 바꾸는 날짜 패턴이 불러와져요.
u 또는 v 플래그는 언제 필요한가요?
텍스트에 이모지처럼 기본 다국어 평면 밖의 문자가 있으면 u를 쓰세요. 마침표와 수량자가 그런 문자를 한 글자로 다루고, \p{L} 같은 Unicode 속성도 쓸 수 있어요. 더 새로운 v 플래그는 u의 기능을 모두 포함하고, 대괄호 안에서 [\p{L}--[a-z]](ASCII가 아닌 문자)처럼 집합 연산을 더해요. 두 플래그는 함께 쓸 수 없어요.