Regex 테스터: 매칭으로 패턴 테스트하기
Regex 테스터: 실시간 매치 하이라이팅, 캡처 그룹 표시, 모든 regex 플래그 지원으로 정규표현식을 디버그하세요.
Regex 테스터란?
Regex 테스터는 실시간 피드백으로 정규표현식을 작성, 테스트, 디버그하는 무료 브라우저 기반 도구입니다. regex 개발의 핵심 문제를 해결합니다: 실제 텍스트에 대해 테스트하기 전까지 패턴이 올바른지 알 수 없으며, 대부분의 환경에서 편집-실행-확인 사이클은 느리고 단편적입니다.
패턴을 입력하면 즉시 평가됩니다. 매치가 테스트 문자열에 직접 하이라이트되고, 캡처 그룹이 추출 및 라벨링되며, 각 매치의 문자 위치가 보고되고, 교체 모드로 프로덕션 코드에 적용하기 전에 대체 결과를 미리 볼 수 있습니다. JavaScript의 6가지 regex 플래그 모두 지원됩니다. 카테고리별로 정리된 49개의 사전 빌드된 패턴 라이브러리가 일반적인 유효성 검사 요구에 활용 가능합니다. 모든 것이 브라우저에서 실행되며 패턴과 테스트 데이터는 어디에도 전송되지 않습니다.
주요 기능
- 입력 중 실시간 매칭: JavaScript 네이티브
RegExp엔진을 사용해 키 입력마다 매치를 재계산합니다. 버튼을 누르지 않아도 결과 패널이 업데이트됩니다. - 모든 JavaScript regex 플래그 (g, i, m, s, u, y): 각 플래그는 라벨이 있는 체크박스입니다: global, case-insensitive, multiline, dotAll, unicode, sticky. 활성 플래그가 패턴 입력 필드 옆에 실시간으로 표시되며 JavaScript 소스 코드에서 사용하는
/패턴/플래그표기법을 반영합니다. - 테스트 문자열의 매치 하이라이팅: 하이라이트된 매치 패널이 테스트 문자열을 표시하며 각 매치를 기본색 배경 스타일의
<mark>요소로 감쌉니다. 매치되지 않은 텍스트는 스타일 없이 표시됩니다. 패널은 실시간 매치 카운트를 표시합니다. - 캡처 그룹 추출: 매치가 있을 때 매치 상세 패널이 나타납니다. 각 매치 항목은 완전한 매치 텍스트, 시작 및 종료 문자 위치, 캡처 그룹의 라벨 목록(
$1,$2등)을 표시합니다. 내용 없는 그룹은 "비어있음"으로 라벨링됩니다. - 매치 카운트와 위치: 상세 패널의 각 매치 항목은 정확한
index와index + match.length를 표시하며, 이는 JavaScriptRegExpExecArray의index속성과 직접 대응합니다. - 대체와 함께하는 교체 모드: 전환 가능한 교체 섹션이 교체 문자열을 받아 완전한 대체 결과를 표시합니다. 역참조(
$1,$2)를 지원합니다. 결과를 클립보드에 복사할 수 있습니다. - 일반적인 regex 패턴 라이브러리: 8개 카테고리에 49개 패턴이 있는 검색 가능한 패턴 라이브러리: 유효성 검사, 날짜와 시간, 숫자, 웹과 네트워크, 파일과 경로, 코드, 텍스트, 식별자. "Use Pattern"을 클릭하면 패턴 입력 필드에 로드됩니다.
Regex 테스터 사용 방법
1단계: 패턴 입력
패턴 입력 필드에 정규표현식을 입력합니다. 필드 양쪽에 / 구분자가 표시되어 regex 형식을 시각적으로 나타냅니다. 입력하는 내용에 슬래시를 포함하지 마세요 — 패턴 본문만 입력합니다.
패턴에 구문 오류가 있으면(닫히지 않은 그룹이나 잘못된 이스케이프 시퀀스 등), 패턴 입력 필드 아래에 즉시 빨간색 오류 메시지가 표시되며 JavaScript RegExp 생성자의 정확한 오류 텍스트가 포함됩니다. 오류가 있는 패턴은 실행할 수 없지만, 오류 메시지가 정확히 무엇이 잘못되었는지 알려줍니다.
2단계: 플래그 설정
패턴 입력 필드 아래에 6개의 플래그 체크박스가 있습니다. 기본적으로 g (전역) 플래그가 활성화됩니다. 체크박스를 클릭하여 플래그를 전환합니다:
g(전역): 첫 번째만이 아닌 모든 매치 찾기i(대소문자 구분 없음): 대문자와 소문자를 동등하게 처리m(멀티라인):^와$가 전체 문자열이 아닌 각 줄의 시작과 끝에서 매치s(dotAll):.이 다른 모든 문자뿐 아니라 줄바꿈 문자에도 매치u(unicode): 완전한 Unicode 지원 활성화.\p{}Unicode 속성 이스케이프를 사용하는 패턴에 필요y(sticky): 앞을 검색하지 않고 문자열의 현재 위치(lastIndex)에서만 매치
활성 플래그 문자열이 패턴 필드 옆에 실시간으로 표시되므로 전역과 대소문자 구분 없음이 모두 체크되면 gi가 나타납니다.
3단계: 테스트 문자열 입력
테스트 문자열 패널에 매치시킬 텍스트를 붙여넣거나 입력합니다. 테스트 문자열의 문자 수가 패널 헤더에 표시됩니다. 텍스트 영역은 여러 줄 입력을 허용하고 수직으로 크기가 조정됩니다.
4단계: 매치 결과 읽기
오른쪽의 하이라이트된 매치 패널이 즉시 업데이트됩니다. 패턴과 매치하는 테스트 문자열의 각 부분이 하이라이트됩니다. 패널 헤더에 총 매치 수가 표시됩니다.
두 개의 메인 패널 아래에 각 매치를 개별적으로 나열하는 매치 상세 섹션이 나타납니다:
- 매치 번호 (1부터 시작)
- 매치된 텍스트 (하이라이트된 코드 블록으로 표시)
- 문자 위치: 시작 인덱스와 종료 인덱스
- 캡처 그룹 (
$1,$2등으로 라벨링)
5단계: 교체 모드 사용 (선택)
교체 섹션을 열려면 "Show Replace" 버튼을 클릭합니다. Replace With 필드에 교체 문자열을 입력합니다. 역참조가 작동합니다: $1은 첫 번째 캡처 그룹의 내용을 삽입하고, $2는 두 번째를, 이하 동일합니다. 결과 패널이 즉시 업데이트되어 완전한 대체 결과를 표시합니다. 복사 아이콘을 클릭하여 결과를 복사합니다.
6단계: 패턴 라이브러리 사용 (선택)
"Pattern Library" 버튼을 클릭하여 검색 가능한 패턴 패널을 엽니다. 검색 상자에 입력하여 이름, 설명 또는 카테고리로 필터링합니다. 항목 옆의 "Use Pattern"을 클릭하여 패턴 필드에 직접 로드합니다. 선택 후 라이브러리가 자동으로 닫힙니다.
실용적인 예시
예시 1: 이메일 주소 유효성 검사
패턴: ^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$
플래그: g
테스트 문자열:
user@example.com
invalid-email
another@test.co.uk
@missing-local.com
결과: 두 개의 매치 — user@example.com과 another@test.co.uk가 하이라이트됩니다. 나머지 두 줄은 매치가 없습니다.
예시 2: 로그 라인에서 캡처 그룹 추출
패턴: (\d{4}-\d{2}-\d{2}) (\w+): (.+)
플래그: gm
테스트 문자열:
2026-02-28 ERROR: Connection timeout after 30s
2026-02-27 INFO: Server started on port 3000
매치 1의 상세 정보:
- 완전한 매치:
2026-02-28 ERROR: Connection timeout after 30s $1:2026-02-28$2:ERROR$3:Connection timeout after 30s
예시 3: 캡처 그룹 역참조를 사용한 교체
패턴: (\w+)\s(\w+) 교체: $2, $1 테스트 문자열: John Smith 결과: Smith, John
두 개의 캡처된 단어 그룹의 순서를 바꾸기 위해 $1과 $2를 사용하는 교체 모드를 보여줍니다.
팁과 모범 사례
포괄적인 테스트를 위해 전역 플래그를 활성화하세요. g가 꺼져 있으면 매칭은 첫 번째 결과 이후에 멈춥니다. 개발 중에는 일반적으로 g를 활성화하여 테스트 문자열의 모든 잠재적 매치를 확인하고 예기치 않은 추가 매치가 없는지 검증합니다.
패턴에서 ^나 $를 사용할 때는 m (멀티라인) 플래그를 사용하세요. m 없이는 ^가 전체 입력 문자열의 맨 앞에만, $가 맨 끝에만 매치합니다. m을 사용하면 각 줄의 시작과 끝에서 매치하며, 여러 줄 입력을 처리할 때 대부분의 경우 원하는 동작입니다.
영길이 매치 보호가 내장되어 있습니다. 전역 플래그가 활성화되면 매칭 루프는 영길이 매치를 확인하고 무한 루프를 방지하기 위해 lastIndex를 증가시킵니다. 따라서 a*나 \b 같은 패턴이 브라우저를 멈추게 하지 않습니다.
/패턴/플래그 표기법으로 패턴을 복사하세요. Copy Pattern 버튼은 JavaScript 표기법으로 슬래시와 활성 플래그를 포함한 완전한 패턴을 클립보드에 씁니다 — 예: /\d{4}-\d{2}-\d{2}/gm. JavaScript 소스 코드에 직접 붙여넣을 수 있습니다.
패턴을 스니펫에 저장하세요. Save to Snippets 버튼(Copy Pattern 옆에 표시)은 현재 패턴을 /패턴/플래그 형식으로 Glyph Widgets 서포터 기능을 통해 사용 가능한 스니펫 라이브러리에 저장합니다. 세션 기록만 의존하는 것보다 더 지속적입니다.
일반적인 문제 및 해결
패턴이 빨간색 오류 메시지를 표시합니다. 오류 텍스트는 JavaScript RegExp 생성자에서 직접 나오며 무엇이 잘못되었는지 설명합니다. 일반적인 오류에는 Invalid regular expression: missing ) (닫히지 않은 캡처 그룹)와 Invalid escape (u 플래그 없이 유효한 이스케이프 시퀀스가 아닌 문자 뒤의 백슬래시)가 포함됩니다. 오류 메시지를 문자 그대로 읽으세요 — 문제를 구체적으로 지정합니다.
예상 매치가 하이라이트되지 않습니다. 대소문자 구분 없는 매칭에 i 플래그가 필요한지, 또는 여러 줄 입력에서 ^나 $를 사용하는 패턴에 m 플래그가 필요한지 확인합니다. 패턴이 너무 엄격하게 앵커되지 않았는지도 확인하세요 — ^\d+$는 숫자만 포함된 줄에만 매치하며, 다른 텍스트에 삽입된 숫자에는 매치하지 않습니다.
캡처 그룹이 "비어있음"으로 표시됩니다. 캡처 그룹은 그룹이 매치에 참여했지만 서브패턴이 0개 문자와 매치했을 때, 또는 선택적 그룹((...)?)이 참여하지 않았을 때 "비어있음"이 됩니다. 이는 패턴에 그룹이 전혀 없는 경우와는 다릅니다.
교체 결과가 역참조를 사용하지 않습니다. 교체 문자열의 역참조는 $1, $2, $n 구문을 사용합니다. \1이나 %1을 사용하면 작동하지 않습니다 — JavaScript의 String.prototype.replace에서 유효하지 않습니다. 이름이 있는 그룹은 $<이름> 구문을 사용합니다.
라이브러리에서 패턴을 로드했지만 매치되지 않습니다. 일부 라이브러리 패턴에는 앵커(^와 $)가 포함되어 있으며 더 큰 테스트 문자열 내에서의 서브스트링 매칭이 아닌 전체 문자열 유효성 검사를 위해 설계되었습니다. 단락 내에서 패턴을 검색하는 경우 앵커를 제거하거나 m 없이 g를 추가하여 핵심 패턴이 매치되는지 확인하세요.
개인정보 보호 및 보안
Regex 테스터의 모든 정규표현식 평가는 JavaScript의 네이티브 RegExp 엔진을 사용하여 브라우저에서 실행됩니다. 패턴, 테스트 문자열, 매치 결과는 어떤 서버로도 전송되지 않습니다. 공유 가능한 URL 기능은 패턴과 테스트 문자열을 URL 자체에 인코딩합니다(클라이언트 사이드만). 링크를 공유해도 서버 왕복이 발생하지 않습니다. 도구는 초기 페이지 로드 후 오프라인으로 작동합니다.
자주 묻는 질문
Regex 테스터는 무료인가요? 네, 계정 없이, 회원가입 없이, 사용 제한 없이 완전히 무료입니다.
데이터는 안전한가요? 패턴과 테스트 문자열은 브라우저를 절대 떠나지 않습니다. 모든 매칭은 JavaScript의 내장 RegExp를 사용하여 로컬에서 실행됩니다. 매칭 프로세스에 관여하는 서버 사이드 컴포넌트가 없습니다.
오프라인으로 사용할 수 있나요? 네. 페이지가 한 번 로드되면 도구 전체가 인터넷 연결 없이 작동합니다. 패턴 라이브러리, 매칭 엔진, 교체 모드가 모두 로컬에서 실행됩니다.
어떤 regex 방언을 사용하나요? ECMAScript 정규표현식 명세를 구현하는 JavaScript의 네이티브 RegExp 엔진을 사용합니다. lookaheads, lookbehinds (모던 JS에서), 캡처 그룹, 비캡처 그룹, 역참조, Unicode 속성 이스케이프(u 플래그)를 포함한 대부분의 일반적인 regex 구문을 지원합니다.
lookaheads와 lookbehinds를 지원하나요? 네. 긍정적 lookahead (?=...), 부정적 lookahead (?!...), 긍정적 lookbehind (?<=...), 부정적 lookbehind (?<!...)가 모두 여기서 사용하는 JavaScript 엔진에서 지원됩니다. ECMAScript 2018 명세의 일부이며 모든 모던 브라우저에서 지원됩니다.
패턴을 다른 사람과 공유할 수 있나요? 네. 패턴, 테스트 문자열, 플래그를 URL에 인코딩하는 공유 가능한 상태를 사용합니다. 브라우저 주소 표시줄에서 URL을 복사하여 공유하세요. 수신자가 링크를 열면 공유된 URL에서 상태가 로드되었음을 토스트 알림으로 알려줍니다.
패턴 라이브러리에는 몇 개의 패턴이 있나요? 8개 카테고리에 정리된 49개 패턴: 유효성 검사 (이메일, URL, 전화번호, UUID, 비밀번호 포함 10개), 날짜와 시간 (5개), 숫자 (5개), 웹과 네트워크 (6개), 파일과 경로 (5개), 코드 (6개), 텍스트 (7개), 식별자 (신용카드, SSN, IBAN, ISBN-13, IMEI 포함 5개).
s (dotAll)와 m (멀티라인) 플래그의 차이점은 무엇인가요? 서로 다른 것에 영향을 미칩니다. s 플래그는 .이 다른 모든 문자에 더해 줄바꿈 문자에도 매치되도록 합니다. 없으면 .은 줄바꿈 문자를 건너뜁니다. m 플래그는 ^와 $가 전체 문자열이 아닌 각 줄의 시작과 끝에서 매치되도록 합니다. 독립적입니다 — 하나, 둘 다, 또는 둘 다 비활성화할 수 있습니다.
\p{Letter}와 같은 Unicode 속성 이스케이프를 사용할 수 있나요? 네, u 플래그가 활성화되어야 합니다. u가 활성화되면 \p{Lu} (대문자) 및 \p{Script=Latin}과 같은 패턴이 모던 브라우저에서 지원됩니다. u 없이는 \p 시퀀스가 리터럴 p로 처리됩니다.
여러 줄에 걸쳐 매치하려면 어떻게 하나요? s (dotAll) 플래그를 활성화하여 .이 줄바꿈에 매치되도록 하고, s가 활성화된 상태에서 [\s\S]*? 또는 .+를 사용합니다. ^와 $가 줄 시작과 끝에 앵커되어야 한다면 m도 활성화하세요.
관련 도구
- JSON Formatter — regex 테스트 문자열로 사용할 JSON 포맷
- Base64 Encoder/Decoder — regex를 적용할 텍스트 인코딩/디코딩
- Diff Checker — 원본과 교체된 텍스트를 나란히 비교
지금 Regex 테스터를 사용해 보세요: Regex 테스터