CodeKitHub
텍스트 도구

정규식 테스터 온라인

마지막 업데이트:

정규식 테스터는 정규 표현식을 작성하면서 실제 텍스트에 대한 매칭 결과를 캡처 그룹, 플래그와 함께 입력하는 즉시 확인할 수 있게 해줍니다. 이 도구는 MDN의 정규 표현식 가이드에 설명된 자바스크립트 엔진을 사용하며, Node.js와 모든 브라우저가 쓰는 것과 같은 문법입니다. 코드에 적용하기 전에 패턴을 만들고 디버깅하기에 좋습니다.

//

    이 도구는 무엇인가요?

    정규 표현식(regex)은 텍스트를 찾고, 검증하고, 추출하기 위한 간결한 패턴 언어입니다. 이메일 패턴으로 폼 입력값을 검증하거나, \d{4}-\d{2}-\d{2}로 날짜를 찾거나, 캡처 그룹으로 필요한 부분만 뽑아낼 수 있습니다. 거의 모든 프로그래밍 언어와 에디터가 정규식을 지원합니다.

    이 테스터는 자바스크립트 정규식 엔진을 사용합니다. Node.js와 모든 브라우저에서 돌아가는 것과 같은 엔진이므로, 여기서 만든 패턴은 자바스크립트/타입스크립트 코드에서도 똑같이 동작합니다. 대부분의 패턴은 파이썬, 자바, Go에서도 수정 없이 그대로 작동합니다.

    왜 사용해야 할까요?

    • 실시간 피드백 — 패턴을 입력하는 대로 매칭 결과가 노란색으로 하이라이트됩니다.
    • 매칭마다 캡처 그룹을 표시 — $1과 $2에 실제로 무엇이 담길지 바로 확인할 수 있습니다.
    • 모든 플래그 지원 — g(전체 매칭), i(대소문자 무시), m(여러 줄), s(줄바꿈도 매칭), u(유니코드).
    • 패턴에 문법 오류가 있으면 명확한 오류 메시지를 표시합니다.
    • 무료이고 개인정보가 보호됩니다 — 패턴과 텍스트가 브라우저 밖으로 나가지 않습니다.

    사용 방법

    1. 두 개의 / 문자 사이에 패턴을 입력하세요(슬래시를 직접 이스케이프할 필요는 없습니다).
    2. 두 번째 / 뒤의 작은 입력란에서 플래그를 조정하세요 — 기본값 g는 모든 매칭을 찾습니다.
    3. 아래에 테스트할 텍스트를 붙여넣으세요.
    4. 매칭 결과가 즉시 하이라이트되고, 캡처 그룹이 아래에 나열됩니다.
    5. 패턴이 유효하지 않으면 어디가 잘못됐는지 오류 메시지로 설명해줍니다.

    예시

    입력

    패턴: (\w+)@(\w+)\.com
    테스트 문자열: Contact alice@example.com or bob@test.com

    결과

    ✓ 2건 매칭
    #1 그룹: $1=alice  $2=example
    #2 그룹: $1=bob  $2=test

    괄호는 캡처 그룹을 만들며, 치환 시 $1, $2로 참조할 수 있습니다.

    실전 팁

    • 이메일 입력값을 검증하시나요? ^[^\s@]+@[^\s@]+\.[^\s@]+$는 명백한 오타는 걸러내면서 유효하지만 흔치 않은 주소는 거부하지 않는 관대한 패턴입니다 — RFC 5322를 완전히 준수하려면 한 줄짜리 정규식이 아니라 전용 라이브러리가 필요합니다.
    • URL에서 쿼리 파라미터를 추출하시나요? [?&]([^=]+)=([^&]*)에 g 플래그를 붙인 뒤 각 매칭마다 $1/$2를 읽으면 &와 =로 직접 문자열을 쪼개는 것보다 편합니다.
    • .replace()에 쓸 패턴인가요? 여기서 먼저 테스트해보세요. 하이라이트된 부분이 캡처 그룹까지 포함해서 .replace()가 정확히 건드릴 부분입니다.
    • 여러 줄로 된 로그를 파싱하시나요(각 줄 시작의 타임스탬프를 매칭하는 등)? m 플래그를 추가하면 ^와 $가 전체 문자열이 아니라 줄 단위로 앵커됩니다.
    • 파이썬이나 PHP에서 가져온 패턴이 여기서는 매칭이 안 되나요? (?P<name>...) 형태의 이름 있는 그룹인지 확인해보세요 — 자바스크립트는 P 없이 (?<name>...)를 사용합니다. 소유적 수량자(++, *+)도 자바스크립트 정규식에는 없습니다.

    범용이 아니라 자바스크립트 정규식 테스터입니다

    이 도구는 자바스크립트에 내장된 RegExp 엔진을 그대로 사용합니다. 브라우저 콘솔이나 Node.js에서 str.match(pattern)이나 pattern.test(str)을 실행할 때와 정확히 같은 코드 경로입니다. 이는 PHP가 사용하는 PCRE(많은 "범용" 정규식 테스터가 기본으로 삼는 방식)나 파이썬의 re 모듈과는 다릅니다. 자바스크립트에는 소유적 수량자나 원자 그룹이 없고, 이름 있는 캡처 그룹은 PCRE/파이썬의 (?P<name>...) 대신 (?<name>...)를 사용합니다.

    폼 검증, 라우트 매처, 로그 파서처럼 JS나 타입스크립트 안에서 패턴을 실제로 사용할 예정이라면, 이곳에서 테스트하는 것으로 문법 불일치를 완전히 없앨 수 있습니다. 이 페이지에서 하이라이트되는 결과는 런타임에서 new RegExp(pattern, flags)가 매칭하는 결과와 정확히 같습니다.

    실제로 함께 쓰기 좋은 도구

    정규식 테스트는 혼자 끝나는 경우가 드뭅니다. 보통은 이런 순서로 진행됩니다. 여기서 패턴을 확인하고, 실제 코드에서 .replace()를 실행한 뒤, 치환 전후 텍스트를 비교해서 의도한 대로만 바뀌었는지 확인하는 식이죠.

    캡처 그룹으로 구조화된 데이터를 추출하는 작업은 흔히 곧바로 JSON으로 이어집니다. 추출한 결과를 포맷팅해서 예상대로 파싱됐는지 확인해보세요.

    텍스트 비교 · JSON 포맷터

    자주 묻는 질문

    이 테스터는 어떤 정규식 종류를 사용하나요?

    자바스크립트(ECMAScript)입니다. 모든 브라우저와 Node.js에서 쓰는 엔진이죠. 기본 문법은 이식성이 좋지만, 일부 기능은 언어마다 다릅니다. 예를 들어 lookbehind 지원 여부나 이름 있는 그룹 문법이 파이썬과 자바에서는 다릅니다.

    왜 제 패턴이 첫 번째 매칭만 찾나요?

    g(전역) 플래그가 빠졌기 때문입니다. g가 없으면 정규식은 첫 매칭을 찾은 뒤 멈춥니다. 이 도구는 기본값이 g이니 실수로 지우지 않았는지 확인해보세요.

    왜 .이 줄바꿈에 매칭되지 않나요?

    기본적으로 .은 줄바꿈을 제외한 모든 문자에 매칭됩니다. .이 줄바꿈에도 매칭되도록 하려면 s 플래그(dotall)를 추가하거나, 이식성을 위해 [\s\S]를 대신 사용하세요.

    캡처 그룹 결과는 무엇을 의미하나요?

    패턴 안의 괄호 쌍마다 그 괄호가 매칭한 텍스트를 캡처합니다. $1이 첫 번째 그룹, $2가 두 번째 그룹이며, 이런 식으로 계속됩니다. 이 값들은 치환 작업이나 추출 코드에서 참조하는 대상입니다.

    왜 제 정규식이 느리거나 멈추나요?

    대개 (a+)+ 같은 중첩된 수량자가 매칭되지 않는 입력에서 일으키는 파국적 백트래킹 때문입니다. 모호한 반복을 피하도록 패턴을 다시 작성하세요. 이 도구는 응답성을 유지하기 위해 최대 1000건의 매칭까지만 처리합니다.

    관련 도구