정규식 테스트

브라우저에서 실제 텍스트로 바로 패턴을 테스트하세요.

일치 항목

  
#종류값위치

브라우저에서 실행됩니다. 입력한 내용은 어디로도 전송되지 않습니다.

정규식 테스트 방법

  1. 패턴을 입력하거나 붙여넣고 필요한 플래그를 선택하세요.
  2. 일치시킬 텍스트를 붙여넣으세요.
  3. 강조된 일치 항목, 그룹 표, 치환 미리보기를 확인하세요.

정규식 문법 빠른 참조

패턴일치하는 대상
\d0부터 9까지의 모든 숫자
\w모든 문자, 숫자, _ 문자
\s모든 공백 문자
+바로 앞 토큰의 1회 이상 반복
*바로 앞 토큰의 0회 이상 반복
?0회 또는 1회, 또는 수량자를 게으르게 만듦
^와 $문자열 또는 줄의 시작과 끝

JavaScript 정규식 기능

기능문법참고
이름 있는 그룹(?<name>...)ES2018부터 지원
후방탐색(lookbehind)(?<=...) 및 (?<!...)ES2018부터 지원
유니코드 모드u 플래그\p{Letter} 같은 유니코드 속성 이스케이프에 필요
대소문자 무시i 플래그다른 대부분의 언어와 같은 방식

패턴 작성 팁

  • . ( ) [ ] 같은 특수문자를 문자 그대로 쓰려면 백슬래시로 이스케이프하세요.
  • 나중에 참조할 필요가 없는 그룹에는 비캡처 그룹 (?:...)을 사용하세요.
  • 탐욕적 수량자는 가능한 한 많이 일치시킵니다. +? 처럼 뒤에 ?를 붙이면 가능한 가장 빠른 지점에서 멈추는 게으른 매칭이 됩니다.
  • 예상한 텍스트만이 아니라 빈 문자열이나 여분의 공백 같은 경계 사례도 테스트하세요.

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

패턴이 갑자기 응답하지 않는 이유는 무엇인가요?

일부 패턴은 특정 텍스트에서 지수적으로 백트래킹할 수 있습니다. 매칭은 1.5초 제한이 있는 백그라운드 워커에서 실행되므로 폭주하는 패턴은 탭을 멈추게 하는 대신 중단됩니다.

각 플래그는 무엇을 의미하나요?

g는 첫 번째뿐 아니라 모든 일치를 찾고, i는 대소문자를 무시하고, m은 ^와 $를 줄 단위로 일치시키고, s는 점이 줄바꿈에도 일치하게 하고, u는 완전한 유니코드 모드를 켜고, y는 마지막 위치에 매칭을 고정하고, d는 각 일치의 시작·끝 위치를 추가합니다.

치환 입력란이 테스트 텍스트를 바꾸나요?

아니요. String.replace가 만들어낼 결과를 별도의 결과란에 보여줄 뿐이므로, 입력한 테스트 문자열은 그대로 유지됩니다.

이름 있는 캡처 그룹도 지원하나요?

네. (?<name>...) 형태로 그룹을 작성하면 일치 항목 표의 그룹 번호 옆에 이름이 표시됩니다.

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

아니요. 매칭은 사용자의 브라우저 탭 안 워커에서 실행되며, 입력한 내용은 페이지 밖으로 나가지 않습니다.

어떤 정규식 방식을 사용하나요?

브라우저에 내장된 JavaScript RegExp 엔진으로, 웹 앱이나 Node.js 스크립트를 만들 때 패턴을 실행하는 것과 동일한 엔진입니다.

치명적 백트래킹(catastrophic backtracking)이란 무엇인가요?

(a+)+b처럼 중첩된 반복 그룹이 있는 패턴이 입력이 단 한 글자만 늘어나도 실패까지 걸리는 시간이 기하급수적으로 늘어나는 현상입니다. 여기서는 1.5초 워커 타임아웃이 페이지가 멈추기 전에 그런 패턴을 잡아냅니다.

^와 $가 문자열 전체가 아니라 각 줄의 시작과 끝에도 일치할 수 있나요?

네, m(여러 줄) 플래그를 켜세요. 켜지 않으면 ^와 $는 테스트 문자열 전체의 시작과 끝에만 일치합니다.

관련 도구