편집기

입력 또는 정규식 실행 대기 중…

작업

?
?
?

소개 온라인 정규식 테스터

텍스트를 붙여넣고, 정규식 패턴을 작성하고, 플래그를 전환하면 즉시 매치 결과를 확인할 수 있습니다. 이 정규식 테스터는 최신 JavaScript 런타임과 동일한 RegExp 엔진을 사용하므로 여기서 보는 결과가 프론트엔드 코드, Node.js 스크립트 또는 서버 측 검증에서도 동일하게 적용됩니다. 명명된 캡처 그룹, lookaround 및 유니코드 모드는 런타임이 지원할 때 사용 가능합니다.

이 정규식 테스터를 사용하는 이유

  • 실시간 매칭과 함께 입력 시 자동 재실행되는 선택적 "라이브" 모드
  • 시작 인덱스, 종료 인덱스, 값 및 명명된 캡처 그룹을 포함한 구조화된 매치 목록
  • 전체 JavaScript/ECMAScript RegExp 구문 지원 (JS 런타임과 동일한 엔진)
  • 플래그 제어: g, i, m, s, u, y – 안전하게 조합하고 실험
  • 밀리초 단위 실행 시간을 통한 기본 성능 인사이트
  • 티켓, 문서 또는 커밋 메시지에 빠르게 복사/붙여넣기 위한 텍스트 전용 요약 출력
  • 학습에 탁월: 전체 프로젝트나 테스트 스위트 실행 없이 패턴 프로토타이핑
  • 일상 작업에 이상적: 로그 파싱, 검증, URL/ID 추출, 빠른 데이터 정리
  • 대용량 텍스트 매칭 시 UI 정지를 방지하기 위한 소프트 캡 적용 결과 목록

🔧 정규식 테스터 사용 방법 for regex-tester

1

1. 테스트 텍스트 붙여넣기 또는 입력

검색하려는 텍스트를 추가하세요: 로그, 스니펫, CSV 조각, HTML, JSON 등 일반 텍스트 형식의 모든 내용.

2

2. 정규식 패턴 작성

정규식을 **슬래시로 감싸지 않고** 입력하세요. 예: 기본 이메일 형식 패턴의 경우 <code>\b\w+@\w+\.\w+</code>, 명명된 그룹이 있는 경우 <code>(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})</code>.

3

3. 플래그 설정 (g, i, m, s, u, y)

<code>g</code> (전역), <code>i</code> (대소문자 구분 안 함) 또는 <code>m</code> (다중 행)과 같은 플래그를 전환하세요. 내부적으로 테스터는 JavaScript와 동일하게 <code>new RegExp(pattern, flags)</code>를构建합니다.

4

4. 매치 및 그룹 검사

각 매치를 인덱스, 선택적 종료 인덱스 및 캡처 그룹과 함께 검토하세요. 명명된 그룹은 JSON 형식의 맵으로 표시되어 테스트 픽스처, 파서 또는 문서에 복사할 수 있습니다.

5

5. 요약 복사

텍스트 요약을 빠른 보고서로 사용하세요: 인덱스와 그룹이 포함된 매치 목록을 티켓, 코드 리뷰 코멘트 또는 치트 시트에 붙여넣을 준비가 되어 있습니다.

정규식 구문 및 엔진 상세 정보

문자 클래스 및 기본 사항

JavaScript RegExp 엔진에서 지원하는 핵심 구성 요소.

패턴의미예시
.줄 바꿈을 제외한 모든 문자 (<code>s</code> 플래그가 없는 경우)<code>a.c</code> → <code>abc</code>와 매치
\d, \w, \s숫자, 단어 문자, 공백<code>\d+</code> → <code>123</code>
\D, \W, \S위 항목들의 부정형<code>\S+</code> → 공백이 아닌 연속 문자
[abc]문자 집합<code>[aeiou]</code> → 단일 모음 문자
[^abc]부정 집합<code>[^0-9]</code> → 숫자가 아닌 문자
^, $입력(또는 <code>m</code> 플래그 사용 시 줄)의 시작과 끝<code>^Hello</code>, <code>!$</code>

수량자

이전 토큰의 반복, 탐욕적 및 게으른 동작을 포함합니다.

패턴의미예시
?0회 또는 1회<code>colou?r</code> → <code>color</code> 및 <code>colour</code>와 매칭
*0회 이상<code>a*b</code> → <code>b</code>, <code>aaab</code>
+1회 이상<code>\d+</code> → <code>1</code>, <code>123</code>
{n}정확히 n회<code>a{3}</code> → <code>aaa</code>
{n,}최소 n회<code>\d{3,}</code> → <code>123</code>, <code>1234</code>
{n,m}n회에서 m회 사이<code>a{2,4}</code> → <code>aa</code>, <code>aaa</code>, <code>aaaa</code>

그룹, 주위 탐색 및 명명된 캡처

현대 JavaScript 엔진에서 제공하는 고급 기능들입니다.

기능구문예시
캡처링 그룹(...)<code>(\d{3})-(\d{2})</code> → 지역 코드 + 접미사
비캡처링 그룹(?:...)<code>(?:https?|ftp)://</code>
역참조\1, \2, ...<code>(\w)\1</code> → <code>aa</code>, <code>bb</code>
전방탐색(?=...), (?!...)<code>\w+(?=! )</code> → <code>! </code> 앞의 단어
후방탐색*(?<=...), (?<!...)<code>(?<=#)\w+</code> → <code>#</code> 뒤의 텍스트 (*최신 엔진에서)
명명된 그룹(?<name>...)<code>(?<year>\d{4})</code> → 결과에서 <code>groups.year</code>

플래그 (옵션)

테스터의 플래그는 JavaScript RegExp 플래그와 직접 매핑됩니다.

플래그이름효과
g전역첫 번째 일치만 찾는 대신 모든 일치를 찾음
i대소문자 무시대소문자를 구분하지 않는 매칭
m멀티라인<code>^</code>와 <code>$</code>가 줄 경로와 일치함
sDotAll<code>.</code>가 줄 바꿈도 일치시킴
u유니코드최신 엔진에서 유니코드 모드 및 속성 이스케이프를 활성화함
y고정현재 인덱스에서만 일치 (<code>lastIndex</code>와 함께 사용)

성능 및 안전성

기본 JavaScript 엔진은 정규식을 동기적으로 실행합니다. UI의 반응성을 유지하기 위해 테스터는 수집된 일치 항목 수를 제한합니다(예: 전역 모드에서 처음 500개 히트). 이는 UI 과부하를 방지하는 데 도움이 되지만, 복잡하거나 중요한 패턴에 대한 전체 성능 감사를 대체하지는 않습니다.

명령줄 정규식 도구

여기서 패턴이 작동하면 터미널, 스크립트 또는 CI 작업에서 동일하거나 유사한 정규식을 재사용할 수 있습니다:

리눅스 / macOS

grep으로 검색(확장 정규식)

grep -E 'pattern' file.txt

주어진 패턴과 일치하는 줄 찾기

sed로 검색 및 교체

sed -E 's/pattern/replacement/g' input.txt > output.txt

텍스트 파일에서 일괄 치환

Windows / PowerShell

PowerShell 정규식 검색

Select-String -Pattern '\d{3}-\d{2}-\d{4}' -Path logs.txt

로그 파일에서 미국식 SSN 패턴 찾기(예시)

PowerShell 정규식 교체

(Get-Content input.txt) -replace 'old', 'new' | Set-Content output.txt

간단한 정규식 기반 치환

실용적인 정규식 응용

웹 및 프론트엔드 개발

  • 폼에서 이메일, 사용자 이름, 슬러그 또는 사용자 정의 ID 검증
  • URL 또는 경로에서 라우트 매개변수 추출
  • 클라이언트 측 검증을 위한 패턴 신속한 프로토타이핑
// 기본 이메일 유사 검증
/^[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}$/i.test(email);
// 라우트 매개변수: /post/123
const match = pathname.match(/^\/post\/(\d+)/);

로그, 데이터 및 백엔드

  • 로그 줄에서 타임스탬프 및 레벨 파싱
  • 공백 정규화 및 지저분한 텍스트 정리
  • 비정형 콘텐츠에서 ID, 이메일 또는 참조 추출
// 반복 공백 축소
const normalized = text.replace(/\s+/g, ' ').trim();
// 간단한 로그 줄 매처
const m = line.match(/\[(?<date>\d{4}-\d{2}-\d{2})] (?<level>INFO|ERROR): (?<msg>.*)/);

데이터 정리 및 빠른 스크립트

  • 파싱 전 원치 않는 HTML 태그 또는 속성 제거
  • 긴 텍스트 블롭에서 모든 URL, 이메일 또는 ID 추출
  • 다른 시스템으로 가져오기 위해 데이터셋 필드 준비

❓ Frequently Asked Questions

내 정규식이 왜 아무것도 매칭되지 않나요?

흔한 실수: 1) 특수 문자 이스케이프 안 함 (., ?, + 등), 2) 여러 매칭을 기대할 때 g 플래그 잊음, 3) 앵커 (^, $)나 단어 경계 (\b) 누락, 4) JavaScript 엔진이 아직 지원하지 않는 기능 사용 (일부 lookbehind 등). 패턴을 단순화하고 조각을 점진적으로 추가해 보세요.

⏱️실행 시간(ms)은 무엇을 의미하나요?

각 실행은 performance.now()로 측정됩니다. 이 값은 현재 입력에서 정규식 실행에 걸린 대략적인 단일 실행 측정값입니다. 명백히 비용이 큰 패턴을 발견하는 데 유용하지만, 완전한 벤치마크나 프로덕션 성능 보장은 아닙니다.

🔍첫 번째 매칭과 전역 모드의 차이는 무엇인가요?

g 플래그 없이 JavaScript는 **첫 번째** 매칭만 반환합니다. g를 사용하면 테스터는 input.matchAll()을 사용하여 인덱스와 캡처 그룹을 포함한 **모든** 매칭을 (안전한 최대값까지) 수집합니다. 여러 발생을 고려할 때는 전역 모드를 사용하세요.

🌍유니코드와 <code>\p{...}</code> 이스케이프를 지원하나요?

예, JavaScript 엔진이 지원할 때 가능합니다. u 플래그를 활성화하여 유니코드 모드를 선택하면 최신 브라우저와 최신 Node.js 버전에서 \p{Letter}\p{Script=Greek} 같은 기능을 사용할 수 있습니다.

⚠️치명적인 백트래킹을 감지할 수 있나요?

테스터는 실행 시간을 통해 느린 패턴을 암시할 수 있지만, 치명적인 백트래킹을 완전히 방지할 수는 없습니다: 기본 엔진은 여전히 동기적으로 실행됩니다. 이 도구를 조기 경보 시스템으로 사용한 후, 복잡한 패턴은 자체 코드베이스에서 신중하게 벤치마크하고 검토하세요.

Pro Tips

Best Practice

정규식을 작은 조각으로 구축하세요. 매칭되는 간단한 것부터 시작한 후 앵커, 그룹, 수량자를 단계별로 추가하세요.

Best Practice

가능하면 명명된 캡처 그룹 (<code>(?<name>...)</code>)을 사용하세요. 매칭을 자체 문서화하고 코드 리뷰 시 훨씬 읽기 쉽게 만듭니다.

Best Practice

<code>.*</code>와 중첩된 수량자에 주의하세요. 큰 입력에서 심각한 백트래킹을 일으킬 수 있습니다. 패턴을 더 구체적으로 만들거나 <code>{n,m}</code>으로 반복을 제한하세요.

Best Practice

디버깅할 때 일시적으로 <code>g</code> 플래그를 제거하고 첫 번째 매칭에 집중하여 정신적 모델을 단순화하세요.

Additional Resources

Other Tools