편집기
입력 또는 정규식 실행 대기 중…
작업
이 정규식 테스터를 사용하는 이유
- 실시간 매칭과 함께 입력 시 자동 재실행되는 선택적 "라이브" 모드
- 시작 인덱스, 종료 인덱스, 값 및 명명된 캡처 그룹을 포함한 구조화된 매치 목록
- 전체 JavaScript/ECMAScript RegExp 구문 지원 (JS 런타임과 동일한 엔진)
- 플래그 제어: g, i, m, s, u, y – 안전하게 조합하고 실험
- 밀리초 단위 실행 시간을 통한 기본 성능 인사이트
- 티켓, 문서 또는 커밋 메시지에 빠르게 복사/붙여넣기 위한 텍스트 전용 요약 출력
- 학습에 탁월: 전체 프로젝트나 테스트 스위트 실행 없이 패턴 프로토타이핑
- 일상 작업에 이상적: 로그 파싱, 검증, URL/ID 추출, 빠른 데이터 정리
- 대용량 텍스트 매칭 시 UI 정지를 방지하기 위한 소프트 캡 적용 결과 목록
🔧 정규식 테스터 사용 방법 for regex-tester
1. 테스트 텍스트 붙여넣기 또는 입력
검색하려는 텍스트를 추가하세요: 로그, 스니펫, CSV 조각, HTML, JSON 등 일반 텍스트 형식의 모든 내용.
2. 정규식 패턴 작성
정규식을 **슬래시로 감싸지 않고** 입력하세요. 예: 기본 이메일 형식 패턴의 경우 <code>\b\w+@\w+\.\w+</code>, 명명된 그룹이 있는 경우 <code>(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})</code>.
3. 플래그 설정 (g, i, m, s, u, y)
<code>g</code> (전역), <code>i</code> (대소문자 구분 안 함) 또는 <code>m</code> (다중 행)과 같은 플래그를 전환하세요. 내부적으로 테스터는 JavaScript와 동일하게 <code>new RegExp(pattern, flags)</code>를构建합니다.
4. 매치 및 그룹 검사
각 매치를 인덱스, 선택적 종료 인덱스 및 캡처 그룹과 함께 검토하세요. 명명된 그룹은 JSON 형식의 맵으로 표시되어 테스트 픽스처, 파서 또는 문서에 복사할 수 있습니다.
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>가 줄 경로와 일치함 |
| s | DotAll | <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
❓내 정규식이 왜 아무것도 매칭되지 않나요?
., ?, + 등), 2) 여러 매칭을 기대할 때 g 플래그 잊음, 3) 앵커 (^, $)나 단어 경계 (\b) 누락, 4) JavaScript 엔진이 아직 지원하지 않는 기능 사용 (일부 lookbehind 등). 패턴을 단순화하고 조각을 점진적으로 추가해 보세요.⏱️실행 시간(ms)은 무엇을 의미하나요?
performance.now()로 측정됩니다. 이 값은 현재 입력에서 정규식 실행에 걸린 대략적인 단일 실행 측정값입니다. 명백히 비용이 큰 패턴을 발견하는 데 유용하지만, 완전한 벤치마크나 프로덕션 성능 보장은 아닙니다.🔍첫 번째 매칭과 전역 모드의 차이는 무엇인가요?
g 플래그 없이 JavaScript는 **첫 번째** 매칭만 반환합니다. g를 사용하면 테스터는 input.matchAll()을 사용하여 인덱스와 캡처 그룹을 포함한 **모든** 매칭을 (안전한 최대값까지) 수집합니다. 여러 발생을 고려할 때는 전역 모드를 사용하세요.🌍유니코드와 <code>\p{...}</code> 이스케이프를 지원하나요?
u 플래그를 활성화하여 유니코드 모드를 선택하면 최신 브라우저와 최신 Node.js 버전에서 \p{Letter}나 \p{Script=Greek} 같은 기능을 사용할 수 있습니다.⚠️치명적인 백트래킹을 감지할 수 있나요?
Pro Tips
정규식을 작은 조각으로 구축하세요. 매칭되는 간단한 것부터 시작한 후 앵커, 그룹, 수량자를 단계별로 추가하세요.
가능하면 명명된 캡처 그룹 (<code>(?<name>...)</code>)을 사용하세요. 매칭을 자체 문서화하고 코드 리뷰 시 훨씬 읽기 쉽게 만듭니다.
<code>.*</code>와 중첩된 수량자에 주의하세요. 큰 입력에서 심각한 백트래킹을 일으킬 수 있습니다. 패턴을 더 구체적으로 만들거나 <code>{n,m}</code>으로 반복을 제한하세요.
디버깅할 때 일시적으로 <code>g</code> 플래그를 제거하고 첫 번째 매칭에 집중하여 정신적 모델을 단순화하세요.
Additional Resources
Other Tools
- CSS 정리 도구
- HTML 정리 도구
- 자바스크립트 정리 도구
- PHP 정리 도구
- 색상 선택기
- 스프라이트 추출기
- Base64 디코더
- Base64 인코더
- C# 포맷터
- CSV 포맷터
- Dockerfile Formatter
- Elm 포맷터
- ENV 포맷터
- Go 포맷터
- GraphQL 포맷터
- HCL 포맷터
- INI 포맷터
- JSON 포맷터
- LaTeX 포맷터
- 마크다운 포맷터
- Objective-C 포맷터
- Php Formatter
- 프로토콜 버퍼 포맷터
- Python 포맷터
- Ruby 포맷터
- Rust 포맷터
- Scala 포맷터
- 셸 스크립트 포맷터
- SQL 포맷터
- SVG 포맷터
- Swift 포맷터
- TOML 포맷터
- Typescript Formatter
- XML 포맷터
- YAML 포맷터
- Yarn 포맷터
- CSS 압축기
- Html Minifier
- Javascript Minifier
- JSON 압축기
- XML 최소화 도구
- HTTP 헤더 뷰어
- PDF 텍스트 변환
- 검색 순위 확인기
- Whois 조회