정규식 테스터(JavaScript)

JavaScript 정규식을 입력한 문자열에 바로 시험해 볼 수 있습니다. 일치 부분과 캡처 그룹(번호·이름)을 강조하고, 치환 미리보기와 JavaScript·Python·PHP 코드 예시도 보여 줍니다.

엔진: 브라우저의 JavaScript(ECMAScript) RegExp

PCRE(PHP), Python, Java 등의 정규식과는 문법과 동작이 다른 부분이 있습니다. 다른 언어에서 쓸 때는 그 언어 환경에서도 확인해 주세요.

플래그

패턴을 입력하면 일치한 부분이 여기에 표시됩니다.

사용 방법

  1. "정규식(패턴)"에 슬래시(/) 없이 패턴을 입력하고 g, i, m 등 플래그를 고릅니다.
  2. "테스트 문자열"을 입력하면 일치한 부분이 강조되고 개수, 위치, 그룹 목록이 표시됩니다.
  3. 치환을 시험하려면 "치환 미리보기 표시"를 켜고 치환 문자열($1, $<name>, $& 등)을 입력합니다.
  4. "코드에서 사용하기"에서 JavaScript, Python, PHP를 고르면 이 패턴을 쓰는 코드 예시를 복사할 수 있습니다.
  5. 예시가 필요하면 "예제"에서 날짜, 이메일 주소, URL 등을 고르세요.

주의 사항

  • 엔진은 브라우저의 JavaScript(ECMAScript) RegExp입니다. PCRE(PHP), Python, Java, .NET 등과는 문법과 동작이 다른 부분이 있어, 여기서의 결과가 다른 언어에서도 같다고 보장할 수 없습니다.
  • v 플래그는 브라우저가 지원할 때만 표시합니다.
  • 1.5초 안에 끝나지 않는 검색은 중지합니다((a+)+$ 같은 패턴에서 생기는 백트래킹 폭발 대비). Safari(JavaScriptCore)는 이런 검색을 엔진이 스스로 중단하고 "일치 없음"으로 돌려줄 수 있습니다.
  • 테스트 문자열은 20만 자까지, 일치는 1만 개까지 수집하며 목록은 처음 200개, 강조 표시는 처음 1,000개까지입니다.
  • 위치(인덱스)는 JavaScript와 같이 UTF-16 단위로 셉니다. 이모지는 2로 셀 수 있습니다.
  • 코드 예시는 출발점입니다. Python·PHP 버전은 이름 있는 그룹 등의 문법을 바꿔 주지만 모든 차이를 바꾸지는 않습니다.

계산·변환 방식

검색은 페이지와 분리된 Web Worker 안에서 실행합니다. 너무 오래 걸리면 Worker를 통째로 종료하므로 페이지가 멈추지 않습니다. "중지"로 언제든 멈출 수 있습니다.

g 플래그가 있으면 모든 일치를, 없으면 첫 번째 일치만 찾습니다. 빈 문자열에 일치하면 한 글자(u·v 플래그에서는 한 코드 포인트) 넘어가서 계속합니다.

그룹 위치는 d 플래그(hasIndices)로 얻어 일치 부분 안에 중첩해서 강조합니다. HTML로 넣지 않고 모든 문자열을 텍스트로 표시합니다.

자주 묻는 질문

PHP나 Python 정규식과 결과가 같나요?

같다고 보장할 수 없습니다. 이 도구는 브라우저의 JavaScript 엔진에서 동작합니다. 기본 문법은 같지만 후방 탐색, 유니코드 처리, $의 의미 등이 다릅니다. 사용할 언어 환경에서도 확인해 주세요.

입력한 패턴과 문자열이 전송되나요?

아니요. 모두 브라우저 안에서 처리하며 전송하거나 저장하지 않습니다.

"중지했습니다"가 표시되는 이유는 무엇인가요?

(a+)+$처럼 수량자가 중첩된 패턴은 일치하지 않는 문자열에서 처리 시간이 폭발적으로 늘어날 수 있습니다(catastrophic backtracking). 중첩된 수량자를 없애는 등 패턴을 고쳐 주세요.

최종 업데이트: