본문으로 건너뛰기

정규식 테스터

Regex Tester

정규식을 예시 텍스트에 적용해 일치 부분을 실시간으로 강조하고 캡처 그룹을 보여 줍니다.

정규식을 예시 텍스트에 실행해서, 일치하는 곳마다 위치와 캡처 그룹, 그리고 치환하면 나올 결과까지 보여 줍니다. 브라우저의 엔진을 그대로 쓰기 때문에 여기서 일어나는 일이 실제 JavaScript에서 일어나는 일입니다.

🔒 브라우저 안에서만 처리regextestpattern
보기

패턴

//g

문자열 어디서든 일치 가능, 캡처 그룹 2개.

시험할 텍스트

일치하는 것을 모두 나열합니다. `g` 플래그가 없으면 `String.replace`는 첫 번째만 씁니다.

0곳 일치

걸린 시간

0.0 ms

ask@example.com, 문의@example.co.kr and no-reply+tag@mail.example.org

치환

`$1`, `$<name>`, `$&`, `` $` ``, `$'`, `$$`가 모두 확장됩니다. `String.replace`가 확장하는 방식 그대로입니다.

사용 방법

  1. 패턴을 쓰고 플래그를 켭니다

    중요한 여섯 개를 버튼으로 뒀습니다. global, ignore case, multiline, dotAll, unicode, sticky입니다. 위쪽 리터럴이 코드에 그대로 붙여넣을 형태입니다.

  2. 실제로 가진 텍스트를 붙여넣습니다

    일치하는 곳이 본문에서 강조되고, 인접한 것들을 구분할 수 있도록 색이 번갈아 붙습니다. 아래 표에는 그룹별 값이 나오고, 참여하지 않은 그룹도 그렇게 표시됩니다.

  3. 치환을 시험해 봅니다

    `$1`, `$<name>`, `$&`, `` $` ``, `$'`, `$$`가 모두 `String.replace`와 똑같이 확장됩니다. 그래서 미리보기가 실제 결과입니다.

자주 묻는 질문

`g` 플래그가 없다는 경고는 왜 나오나요?

여기서는 일치하는 것을 모두 보여 주지만 코드는 그렇지 않기 때문입니다. `String.replace`는 첫 번째만 바꾸고 `matchAll`은 예외를 던집니다. 화면에 보이는 것과 프로그램이 하는 일 사이의 차이입니다.

Python이나 PCRE와 같은 엔진인가요?

아니요, JavaScript의 것입니다. 후방 탐색과 이름 있는 그룹, `\p{…}`는 되지만 원자 그룹, 소유 수량자, 재귀, 인라인 플래그 그룹은 안 되고, 문자 클래스 동작이 다른 곳도 있습니다. 여기서 되는 패턴이 다른 데서는 실패할 수 있습니다.

패턴을 넣으면 페이지가 멈춥니다.

멈추지 않아야 합니다. 매칭을 워커에서 돌리는 이유가 바로 그것입니다. 파국적으로 백트래킹하는 패턴은 다른 방법으로는 중단할 수 없습니다. 너무 오래 걸리면 실행을 끝내고 알려 줍니다. 유용한 신호이기도 합니다. 여기서 그러는 패턴은 서버에서도 그럴 테니까요.

`.`이 왜 줄바꿈에 안 맞나요?

그게 `s`(dotAll)의 역할이기 때문입니다. 없으면 `.`은 줄 끝 문자를 뺀 모든 것에 맞습니다. `m`(multiline)은 또 다른 것으로, `^`와 `$`의 뜻을 바꿀 뿐 `.`이 무엇에 맞는지는 바꾸지 않습니다.

이 도구로 이어지는 것

다음 단계

이 도구의 결과를 그대로 받을 수 있는 도구들입니다.