본문으로 건너뛰기
ZEKILO Dev

정규식 테스터

패턴을 입력하면 일치한 곳과 그룹, 위치를 바로 보여 줍니다.

입력값은 브라우저 밖으로 나가지 않음ECMAScript기준일 2026.10.03

플래그

대상 텍스트

Esc를 누른 뒤 Tab을 누르면 입력란에서 나갑니다.

일치 표시

결과가 여기에 나타납니다

정규식 테스터 사용 방법

  1. 1「정규식」 칸에 앞뒤 슬래시 없이 패턴을 입력하거나 「예시 넣기」를 누릅니다.
  2. 2「대상 텍스트」에 검사할 글을 붙여 넣고 필요한 플래그를 고릅니다. 일치한 곳이 바로 강조됩니다.
  3. 3모드를 「바꾸기」나 「나누기」로 바꿔 결과를 확인한 뒤 「복사」나 「내려받기」를 누릅니다.

정규식 테스터 옵션

플래그
g는 모든 일치를 찾습니다(기본 켬). i는 대소문자를 무시합니다. m은 ^와 $가 줄마다 일치하게 합니다. s는 점(.)이 줄바꿈과도 일치하게 합니다. u는 유니코드 모드입니다. y는 지금 위치에서만 찾습니다. d는 그룹마다 시작·끝 위치를 함께 보여 줍니다. v(유니코드 집합)는 지원하는 브라우저에서만 보이고 u와 함께 쓸 수 없습니다.
모드
찾기는 일치 목록을 보여 줍니다. 바꾸기는 바꾼 뒤의 텍스트를 보여 주며 바꿀 문자열에 $1, $<name>, $&를 쓸 수 있습니다. 나누기는 String.prototype.split처럼 일치하는 곳마다 텍스트를 나눕니다.
시간 제한
패턴은 최대 1초 동안 실행합니다. 더 걸리면 실행을 멈추고 안내를 보여 줍니다. 이 제한은 바꿀 수 없습니다.

문법: PCRE가 아니라 JavaScript

이 도구는 JavaScript(ECMAScript) 문법입니다. PCRE·Python·Java와 다른 점은 아래 표를 보세요.

패턴은 브라우저에 내장된 정규식 엔진이 ECMAScript 명세에 따라 실행합니다. 여기서 본 결과는 같은 브라우저의 JavaScript 코드에서 RegExp가 돌려주는 결과와 같습니다.

기능 JavaScript PCRE (PHP) Python re Java
이름 그룹 (?<name>…) (?<name>…) 또는 (?P<name>…) (?P<name>…) (?<name>…)
이름으로 역참조 \k<name> \k<name> 또는 (?P=name) (?P=name) \k<name>
바꿀 문자열의 그룹 $1, $<name> $1 또는 \1 \1, \g<name> $1, ${name}
인라인 플래그 (?i) 지원 안 함. 플래그를 고릅니다 지원 맨 앞에서 지원 지원
원자 그룹 (?>…), a++ 지원 안 함 지원 3.11부터 지원 지원
뒤쪽 탐색 (?<=…) 길이 제한 없음 길이 상한이 있어야 함 고정 길이만 길이 상한이 있어야 함
\A, \Z 앵커 지원 안 함. ^와 $를 씁니다 지원 지원 지원
재귀 (?R) 지원 안 함 지원 지원 안 함 지원 안 함
공백·주석을 허용하는 모드 지원 안 함 x 플래그 re.VERBOSE Pattern.COMMENTS
\d ASCII 숫자만 기본은 ASCII 모든 유니코드 숫자 기본은 ASCII

시간 제한을 두는 이유

JavaScript 엔진은 대부분 역추적 방식으로 일치를 찾습니다. (a+)+$처럼 반복 안에 반복이 있는 패턴은 텍스트가 거의 일치하다가 어긋날 때 글자가 하나 늘 때마다 시간이 두 배로 늘어납니다. 서른 글자만으로도 몇 초씩 걸립니다. 이 도구는 모든 패턴을 별도의 백그라운드 스레드에서 실행하고, 1초가 지나면 멈춘 뒤 다음 입력을 위해 새로 시작합니다. 그래서 입력이 멈추지 않습니다.

정규식 테스터 예시

  • 전화번호 찾기 (플래그 g)

    1줄은 패턴, 2줄은 대상 텍스트입니다. 일치 2개: 인덱스 5(그룹 010, 1234, 5678)와 인덱스 33.

    입력

    (\d{3})-(\d{4})-(\d{4})
    연락처: 010-1234-5678, 02-123-4567, 010-9876-5432

    출력

    010-1234-5678
    010-9876-5432
  • 그룹을 써서 바꾸기

    모드: 바꾸기. 2줄이 바꿀 문자열입니다. $1과 $3은 첫째·셋째 그룹입니다.

    입력

    (\d{3})-(\d{4})-(\d{4})
    $1-****-$3
    연락처: 010-1234-5678, 02-123-4567, 010-9876-5432

    출력

    연락처: 010-****-5678, 02-123-4567, 010-****-5432
  • 이름 그룹

    입력

    (?<year>\d{4})-(?<m>\d{2})
    2026-10

    출력

    year: 2026
    m: 10
  • 역추적이 끝나지 않는 패턴

    1초가 지나면 실행을 멈추고, 페이지는 계속 쓸 수 있습니다.

    입력

    (a+)+$
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaab

    출력

    패턴이 너무 오래 걸립니다
  • 닫지 않은 그룹

    입력

    (

    출력

    정규식 문법 오류

예시는 이 도구를 검증하는 기준 사례의 값입니다.

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

입력값이 서버로 전송되나요?

아니요. 입력과 결과는 이 브라우저 안에서만 처리되며 저장하지도 않습니다. 새로 고침하면 사라집니다.

PHP·Python·Java에서 쓰던 패턴이 왜 오류가 나나요?

정규식 문법은 언어마다 다릅니다. (?i) 같은 인라인 플래그, 원자 그룹, 소유 수량자, \A 같은 앵커는 JavaScript에 없습니다. 이 페이지의 표에서 대신 쓸 문법을 확인하세요.

「패턴이 너무 오래 걸립니다」는 무슨 뜻인가요?

패턴 실행이 1초를 넘었다는 뜻입니다. (a+)+처럼 반복 안에 반복이 있으면 엔진이 시도하는 경로가 급격히 늘어나는데, 이를 역추적 폭주라고 합니다. 화면이 멈추지 않도록 실행을 중단합니다. (a+)+$ 대신 a+$처럼 중첩을 없애 보세요.

인덱스와 줄·열은 어떻게 세나요?

인덱스는 JavaScript 문자열 인덱스(UTF-16 코드 단위)로, match.index와 같은 값입니다. 줄과 열은 1부터 세고 열은 글자(코드 포인트) 기준이라 이모지도 1열입니다.

텍스트와 일치 개수는 얼마나 처리할 수 있나요?

대상 텍스트는 최대 5MB까지 넣을 수 있습니다. 1MB까지는 입력하는 대로 처리하고 그보다 크면 「실행」을 눌러 처리합니다. 일치는 앞 10,000개까지 강조하고 목록에 보여 주며, 전체 개수는 항상 알려 줍니다.

처리 방식·표준

  • 처리 위치: 이 브라우저 (내 기기). 전송하거나 저장하지 않습니다.
  • 표준: ECMAScript
  • 엔진: 브라우저에 내장된 RegExp 엔진 (ECMAScript) (브라우저 내장)
  • 브라우저마다 엔진이 달라 v 플래그 같은 새 문법은 일부 브라우저에서 쓸 수 없습니다. 지원하지 않는 문법은 정규식 문법 오류로 알려 줍니다.
  • Safari의 엔진은 역추적이 지나치게 길어지면 스스로 멈추고 일치 없음으로 돌려줍니다. 그래서 빠른 기기에서는 (a+)+$ 같은 패턴이 시간 제한 안내 대신 「일치 없음」으로 나올 수 있습니다.
  • a*처럼 빈 문자열과 일치한 곳은 강조 영역에 가는 막대로 표시합니다.
  • 모드와 플래그만 기억합니다. 패턴, 대상 텍스트, 바꿀 문자열은 저장하지 않습니다.
  • 기준일 2026.10.03
  • 변경 이력: 2026.10.03 처음 공개
오픈소스 라이선스 →
결과가 이상한가요? 오류 신고하기(입력값은 첨부되지 않습니다)