정규식 테스트

브라우저의 JavaScript RegExp 엔진으로 패턴을 실행하므로 결과가 직접 작성한 JavaScript 코드와 같습니다. 슬래시 없이 \d{3}-\d{4}처럼 입력하고, g 플래그를 켜면 모든 일치를 찾습니다.

일치 강조

문제가 해결됐나요?
Google 선호 출처로 추가

사용 방법

  1. 패턴을 앞뒤 슬래시 없이 입력합니다. 예: \d{3}-\d{4}
  2. 플래그를 켜고 끕니다. g 플래그를 켜면 모든 일치를 찾고, 끄면 첫 번째 일치만 보여 줍니다.
  3. 검색할 텍스트를 붙여 넣습니다. 입력하는 동안 일치 부분이 강조되고, 표에 일치 항목과 캡처 그룹이 나옵니다.

계산 방법

패턴은 브라우저에 들어 있는 자바스크립트 RegExp 엔진으로 컴파일합니다. 그래서 문법과 동작이 직접 짠 자바스크립트 코드에서와 똑같습니다. PCRE, 파이썬, .NET 같은 다른 방언과는 군데군데 다릅니다. 오래된 엔진의 후방 탐색 지원이나 자바스크립트에 없는 소유 수량자가 그런 예입니다.

g 플래그가 있으면 exec를 반복 호출해 일치를 최대 1,000개까지 모읍니다. a*나 전방 탐색처럼 빈 문자열과 일치하면 검색 위치를 한 글자 옮기므로 반복이 반드시 끝납니다.

매칭은 백그라운드 워커에서 돌아갑니다. (a+)+$처럼 치명적 백트래킹이 일어나 1.5초를 넘기면 워커를 멈추고, 페이지가 굳는 대신 시간 초과 메시지를 띄웁니다.

정규식 문법 요약

기호뜻
.줄바꿈을 뺀 아무 글자 하나(s 플래그면 줄바꿈 포함)
\d \w \s숫자, 단어 글자(영문·숫자·밑줄), 공백
\D \W \S\d, \w, \s의 반대
[abc] [^abc] [a-z]a, b, c 중 하나 / a, b, c를 뺀 글자 / 범위
^ $텍스트의 시작과 끝(m 플래그면 각 줄의 시작과 끝)
\b단어 경계
* + ?0번 이상, 1번 이상, 0번 또는 1번
{3} {2,5} {2,}정확히 3번, 2번에서 5번, 2번 이상
*? +?최대한 짧게 일치하는 게으른 수량자
(abc) (?:abc)캡처 그룹, 비캡처 그룹
(?<name>abc)이름 있는 캡처 그룹
a|ba 또는 b
(?=x) (?!x)뒤에 x가 옴 / 오지 않음(전방 탐색)
(?<=x) (?<!x)앞에 x가 있음 / 없음(후방 탐색)
\1 \k<name>그룹 1 또는 이름 있는 그룹 역참조

플래그

플래그효과
g전역: 첫 일치만이 아니라 모두 찾음
i대소문자 무시
m여러 줄: ^와 $가 줄바꿈 위치에서도 일치
sdotAll: .이 줄바꿈과도 일치
u유니코드: 서로게이트 쌍을 한 글자로 보고 \p{...} 사용 가능
ysticky: 각 일치가 직전 일치가 끝난 자리에서 바로 시작해야 함

자주 묻는 질문

어떤 정규식 엔진을 쓰나요?

브라우저에 구현된 자바스크립트 정규식입니다. 여기서 되는 패턴은 직접 작성한 자바스크립트나 타입스크립트의 new RegExp에서도 똑같이 동작합니다.

일치가 하나만 보여요

g(global) 플래그가 없으면 자바스크립트 정규식은 첫 일치에서 멈춥니다. g를 켜면 전부 찾습니다.

패턴이 시간 초과된 이유는요?

(a+)+나 (.*)* 같은 중첩 수량자는 거의 일치할 뻔한 텍스트에서 경우의 수를 기하급수적으로 시도할 수 있습니다. 안쪽을 더 구체적으로 쓰거나 중첩을 없애세요.

입력한 텍스트가 전송되나요?

아니요. 패턴과 텍스트는 모두 브라우저 안에서 처리하고 서버로 보내지 않습니다.