사용법
설치 없이 정규식을 테스트하는 방법
패턴을 작성했고 코드에 넣기 전에 그것이 정말 원하는 대로 매칭되는지 확인해야 합니다. 데스크톱 도구를 설치하거나 비공개 로그를 아무 웹사이트에나 붙여넣는 것은 과한 데다 위험할 때가 많습니다. 이 가이드는 브라우저에서 바로 자신의 텍스트로 정규식을 실행하고, 동작을 바꾸는 플래그를 켜고 끄며, 추출되는 캡처 그룹을 읽고, 매칭이 인라인으로 강조되는 것을 지켜보는 방법을 보여줍니다. 그러면서도 패턴과 텍스트는 결코 탭을 벗어나지 않습니다.
단계별 안내
- 정규식 테스터를 열고 두 슬래시 사이의 입력란에 패턴을 입력하세요. 슬래시는 직접 쓰지 않습니다. 엔진이 패턴을 읽는 방식 그대로 보이도록 도구가 슬래시를 표시해 줍니다. 아래 상자에 예시 텍스트를 붙여넣으세요. 예를 들어 로그 몇 줄, 이메일 목록, 또는 검색하려는 코드 블록 같은 것입니다.

- 패턴 옆의 작은 상자에 플래그를 설정하세요. g 플래그는 첫 매칭에서 멈추지 않고 모든 매칭을 찾습니다. i는 대소문자를 구분하지 않게 합니다. m은 앵커 ^ 와 $ 가 전체 텍스트가 아니라 각 줄의 시작과 끝에 매칭되도록 합니다. s는 점이 줄바꿈에도 매칭되게 합니다. 예를 들어 gim 처럼 자유롭게 조합하세요.
- 테스트를 누르세요. 각 매칭이 텍스트 안에서 바로 강조되고, 아래 목록에는 모든 매칭이 위치와 각 캡처 그룹의 값과 함께 표시됩니다. 패턴을 손보고 다시 실행하세요. 미리 보기가 갱신되므로 의도한 것만 정확히 잡고 그 외에는 잡지 않을 때까지 패턴을 좁혀 갈 수 있습니다.

캡처 그룹, 이름 붙은 것과 번호로 된 것
캡처 그룹은 패턴에서 괄호로 감싼 부분이며, 전체가 매칭됐는지만 확인하는 대신 각 매칭에서 한 조각을 뽑아내는 방법입니다. 번호로 된 그룹은 여는 괄호를 기준으로 왼쪽에서 오른쪽으로 셉니다. (\d{4})-(\d{2})-(\d{2}) 에서 그룹 1은 연도, 그룹 2는 월, 그룹 3은 일입니다. 이름 붙은 그룹은 (?<name>...) 구문을 쓰므로, 패턴이 커질 때 (?<year>\d{4}) 가 단순한 번호보다 훨씬 읽기 좋습니다. 여러 문자에 수량자를 적용하기 위해 캡처 없이 그룹만 묶고 싶다면, 결과 목록을 어지럽히지 않도록 비캡처 그룹 (?:...) 을 쓰세요. 테스터는 매 매칭마다 모든 그룹의 값을 보여 주며, 이것이 올바른 부분을 추출하고 있는지 확인하는 가장 빠른 방법입니다.
패턴이 멈추거나 이상하게 동작할 때
두 가지 문제가 거듭 나타납니다. 첫째는 파국적 백트래킹입니다. (a+)+$ 같은 패턴을 긴 비매칭 문자열에 실행하면 엔진이 기하급수적인 경로를 시도하다 멈출 수 있습니다. 테스터는 각 테스트를 짧은 감시 타이머와 함께 Web Worker 에서 실행하므로, 탭이 멈추는 대신 명확한 메시지를 받고 패턴을 단순화할 수 있습니다. 보통 수량자를 소유적 성격으로 만들거나, 앵커를 붙이거나, 중첩 반복을 피하는 식입니다. 둘째는 탐욕 매칭 대 게으른 매칭입니다. 기본적으로 .* 는 가능한 한 많이 잡으므로, 단일 HTML 태그의 내용만 매칭하려면 게으른 형태인 .*? 를 쓰는 것이 좋습니다. 패턴이 무엇을 노려야 하는지 보려고 약간 다른 두 문자열 버전을 비교한다면, 텍스트 비교 도구가 그것들을 나란히 정렬해 표현식을 쓰기 전에 차이가 한눈에 드러나게 해 줍니다.
브라우저가 regex를 평가하는 방법
현대 브라우저는 전체 플래그 세트를 지원하는 기본 ECMAScript regex 엔진을 탑재하고 있습니다. 대소문자 구분 없는 매칭(i), 멀티라인 모드(m), dotAll(s), 유니코드(u), 스티키 플래그(y)입니다. 테스터에 패턴을 입력하면 엔진이 이를 내부 NFA로 컴파일하고 테스트 문자열에 대해 실시간으로 평가하며, 모든 매치 위치와 캡처 그룹을 보고합니다. 백트래킹은 CPU에서 로컬로 발생합니다. 긴 비매칭 문자열에 대한 (a+)+ 같은 패턴은 수 초간 실행될 수 있으며, 브라우저에서 이 지연을 확인하는 것은 프로덕션 코드에 배포하기 전에 유용한 피드백입니다. 어떤 텍스트도 페이지를 벗어나지 않으므로 서드파티 서버를 통하지 않고 로그 샘플이나 어떤 입력도 붙여넣을 수 있습니다.
이 가이드에서 사용하는 도구
자주 묻는 질문
내 패턴이나 테스트 텍스트가 서버로 전송되나요?
아니요. 정규식은 본인 브라우저 안의 Web Worker 에서 실행되므로 패턴과 테스트하는 텍스트는 탭에 머뭅니다. 붙여넣는 텍스트는 흔히 실제 로그, 고객 목록, 또는 내부 설정처럼 남의 서버에 두고 싶지 않은 바로 그런 데이터이기 때문에 이 점이 중요합니다. 테스트를 누르는 동안 개발자 도구의 네트워크 패널을 열어 보면 텍스트를 밖으로 내보내는 요청이 전혀 없음을 확인할 수 있습니다. 또한 페이지가 한 번 로드되면 오프라인에서도 계속 동작합니다.
테스터는 어떤 정규식 방식을 사용하나요?
브라우저에 내장된 JavaScript 정규식 엔진을 사용하며, 이는 Node.js 와 모든 웹 페이지에서 실행되는 것과 같은 엔진입니다. 여기에는 흔한 구문이 모두 포함됩니다. 문자 클래스, 수량자, 앵커, 대안, 번호 및 이름 캡처 그룹, 전방 탐색과 후방 탐색이 그것입니다. Perl 식 재귀나 소유 수량자처럼 다른 방식의 몇몇 기능은 JavaScript 엔진의 일부가 아니므로, PHP 나 Python 프로젝트에서 복사한 패턴이 다르게 동작한다면 보통 그 방식의 차이가 원인입니다.