iGotTools

정규식 패턴 테스트 방법

브라우저에서 정규식을 테스트하세요. 패턴과 테스트 텍스트를 입력하고 플래그를 켜며, 일치와 캡처 그룹을 살피고 치환을 로컬에서 미리 봅니다.

개발 도구

정규식이 강력한 건 간결하기 때문이지만, 그 간결함 때문에 미묘하게 틀리기도 쉽습니다. 올바르게 보이는 패턴이 너무 많이, 너무 적게, 혹은 아예 일치하지 않을 수 있고, 확실히 아는 유일한 방법은 실제 텍스트에 대해 돌려보는 것뿐입니다. 정규식 테스트는 JavaScript 정규식을 브라우저에서 실행해 각 일치를 캡처 그룹과 함께 보여주고 치환을 미리 봅니다 — 텍스트를 업로드하지 않고 모두 처리합니다.

TL;DR

실제 입력에 대해 정규식을 개발하고 검증할 수 있습니다. 완전히 로컬에서.

  • 일치와 그룹이 보입니다 — 각 일치는 텍스트, 인덱스 범위, 캡처 그룹(이름 그룹 포함)을 나열합니다.
  • 치환 미리보기 — 치환값을 입력하면 바뀐 결과가 즉시 나타나고, 변화가 없으면 그렇다고 알려줍니다.
  • JS의 일곱 플래그 — g, i, m, s, u, y, d 를 켜고 끄며 결과가 갱신되는지 봅니다.

정규식이란

정규식은 문자열의 모임을 기술하는 패턴입니다. 텍스트를 검색·검증·추출·치환하는 표준 도구로, 모든 프로그래밍 언어에 내장되어 있습니다. JavaScript에서 정규식은 RegExp 객체이며, 리터럴(/\d+/g)로 쓰거나 하나를 생성해(new RegExp("\\d+", "g")) 씁니다.

정규식이 맡는 흔한 일:

  • 검증 — “이 문자열이 이메일, 날짜, 전화번호처럼 보이는가?”
  • 추출 — “이 텍스트에서 모든 URL, 모든 숫자, 모든 인용구를 꺼낸다.”
  • 치환 — “모든 자리표시자를 실제 값으로 바꾼다” 또는 “모든 공백을 정규화한다.”

정규식은 짧고 기호화되어 있어 문자 하나만 자리가 바껴도 뜻이 달라집니다. 대표적인 입력으로 테스트하는 것이 “작동할 것 같다”를 “작동한다”로 바꾸는 방법입니다.

정규식 패턴의 구성 요소

패턴은 몇 가지 빌딩 블록으로 이루어집니다. 이름으로 알아두면 패턴이 읽기 쉬워집니다.

  • 리터럴 — 자기 자신에 일치하는 보통 문자. catc, a, t 순서로 일치합니다.
  • 문자 클래스 — 대괄호 안에 허용 문자의 모임. [a-z]는 아무 소문자에 일치하고, \d[0-9], \w는 단어 문자, .은 (거의) 아무 문자의 줄임표입니다.
  • 수량자 — 바로 앞 요소가 몇 번 반복하는지. *은 0회 이상, +는 1회 이상, ?는 0회나 1회, {n}이나 {n,m}은 정확하거나 범위가 있는 횟수입니다.
  • 앵커 — 문자가 아닌 위치. ^은 (플래그 m에서는 행의) 시작, $은 끝에 일치합니다.
  • 그룹 — 괄호 (...)는 일치의 일부를 캡처해 나중에 참조하게 합니다. 이름 그룹 (?<year>\d{4})는 캡처에 읽기 쉬운 이름을 줍니다.
  • 선택cat|dogcat 또는 dog에 일치합니다.

이 블록들을 조합해 패턴을 쓰고, 텍스트에 적용해 확인합니다.

플래그

플래그는 전체 패턴의 동작을 바꾸고 닫는 슬래시 뒤에 붙입니다(예 /x/gi). 테스터는 JavaScript의 일곱 플래그를 토글로 노출합니다.

  • g(전체 검색) — 첫 일치가 아니라 모든 일치를 찾습니다. g가 없으면 첫 번째 이후 멈춥니다.
  • i(대소문자 무시) — 일치를 대소문자 구분 없이 해 [a-z]가 대문자에도 일치하게 합니다.
  • m(여러 줄)^$가 전체 문자열뿐 아니라 각 줄의 시작과 끝에 일치하게 합니다.
  • s(점 전체).이 보통은 하지 않는 줄바꿈 문자에도 일치하게 합니다.
  • u(유니코드) — 패턴을 유니코드 코드 포인트로 다뤄 이모지와 비ASCII 문자에 필수입니다.
  • y(스티키)lastIndex 위치에서만 일치하게 해 각 검색을 정확한 위치에 고정합니다.
  • d(인덱스) — 각 캡처 그룹의 값에 더해 시작과 끝 인덱스를 노출합니다.

일상에서는 보통 gi면 충분하고, 나머지는 여러 줄 텍스트, 유니코드, 고급 탐색에서 생기는 특정 사례를 해결합니다.

단계별: 패턴 테스트하기

정규식 테스트를 열고 다음 흐름을 따르세요.

  1. 패턴 칸에 패턴을 입력 — 감싸는 슬래시와 플래그 없이 씁니다. 도구가 리터럴을 조립합니다.
  2. 테스트 텍스트 칸에 텍스트를 붙여 넣기 — 패턴이 뒤지는 대상 텍스트입니다.
  3. 필요한 플래그를 켜기 — g, i, m, s, u, y, d. 켤 때마다 결과가 갱신됩니다.
  4. ‘매치’ 탭 확인 — 각 일치는 일치한 텍스트, 인덱스 범위, 캡처 그룹(이름 그룹은 이름과 함께 표시)을 보여줍니다. 아무것도 일치하지 않으면 “매치 없음”이 보입니다.
  5. ‘치환’ 탭으로 전환치환 문자열을 입력합니다($1이나 $<name>으로 캡처 그룹을 참조할 수 있습니다). 도구는 text.replace(regex, replacement)를 실행해 바뀐 결과를 보여주고, 변화가 없으면 그렇게 알려줍니다.
  6. 복사하거나 초기화정규식 복사로 리터럴, 요약 복사로 일치 목록, 치환 결과 복사로 치환 결과, 초기화로 전부 비웁니다.

어디서 시작할지 모르겠으면, 샘플 드롭다운이 날짜/이메일/URL/단어용으로 만들어진 패턴과 텍스트를 불러와 곧바로 동작하는 예를 보여줍니다.

한계와 JavaScript 고유의 주의점

도구가 기대에 맞도록, 정직한 제약을 몇 가지 짚습니다.

  • JavaScript 엔진 전용 — 도구는 브라우저에서 new RegExp(pattern, flags)를 실행하므로 JavaScript 정규식 엔진을 반영합니다. PCRE, Python, Java가 아닙니다. 다른 엔진용으로 쓴 패턴은 다르게 동작할 수 있고, 도구가 패턴을 “해설”해 주지는 않습니다.
  • 크기에 상한이 있습니다 — 패턴은 500자, 테스트 텍스트는 20,000자까지입니다. 넘기면 실행 대신 문제를 알립니다.
  • 일치는 200개까지 — 패턴이 200회를 넘게 일치하면, 도구는 “처음 200개 매치만 표시합니다.” 알림과 함께 처음 200개만 보여줍니다. 검증엔 충분하고, 거대한 입력의 개수까지 세려면 패턴을 좁히세요.
  • 룩비하인드는 엔진과 세대에 따라 다릅니다 — JavaScript의 룩비하인드((?<=...))는 최신 브라우저에서 지원되지만 오래된 엔진에는 없었고 PCRE와도 다릅니다. 룩비하인드가 실패하면 보통 그게 이유입니다.

자주 묻는 질문

PCRE를 지원하나요?

아니요. 도구는 JavaScript의 RegExp 엔진(new RegExp(pattern, flags))을 쓰며, 고유한 문법과 기능 집합을 가져 PCRE 호환이 아닙니다. 재귀 패턴이나 특정 POSIX 클래스 같은 PCRE 전용 기능은 여기서는 작동하지 않습니다. JavaScript 엔진용으로 패턴을 쓰거나, 테스트 전에 PCRE 패턴을 변환하세요.

캡처 그룹이란?

패턴 안의 괄호 ( ... )는 캡처 그룹을 만들어, 일치한 텍스트의 일부를 기억해 나중에 참조할 수 있게 합니다 — 치환에서는 번호($1, $2)로, 또 이름 그룹 (?<name> ...)을 썼다면 이름으로 참조합니다. ‘매치’ 탭은 각 그룹의 값(과 이름, 있으면)을 보여주어, 패턴이 의도한 대로 캡처하는지 확인하게 해줍니다.

텍스트를 치환하려면?

‘치환’ 탭으로 전환해 치환을 입력하세요. 도구는 현재 플래그로 text.replace(regex, replacement)를 실행해 결과를 보여줍니다. 그룹은 $1, $2, … 으로, 이름 그룹은 $<name>으로 참조할 수 있습니다. 전체 검색 플래그 g가 꺼져 있으면 첫 일치만 바뀝니다. 바뀐 것이 없을 때는 도구가 그렇다고 알려줍니다.

왜 200개만 표시하나요?

안전과 속도 때문입니다. 큰 문서에서 패턴은 수천 번 일치할 수 있고, 전부 그리면 페이지가 거의 멈출 때까지 느려집니다. 200개의 한도는 패턴이 생각한 대로 일치하는지 검증하기엔 충분합니다. 전체 개수가 필요하면 패턴을 더 구체적으로 만들거나 더 작은 발췌로 테스트하세요.

iGotTools

이 도구로 시작

지금 시작하기