이메일 또는 URL 형식 검증
테스터에서 패턴을 만들고, 실제 입력값과 엣지 케이스를 함께 붙여넣어 폼 검증에 반영하기 전에 정확히 무엇이 매칭되는지 확인하세요. 프리셋은 실세계 입력의 95%를 처리하는 합리적인 출발점을 제공합니다.
실시간 매칭 하이라이트, capture group, 치환 모드로 정규식을 작성하고 테스트합니다. JavaScript 방언이며, 전부 브라우저에서 실행됩니다.
JavaScript / ECMAScript regex 입니다 (브라우저의 네이티브 RegExp 와 동일한 엔진). POSIX 의 엄격한 상위 집합이며, 일반적인 기능 면에서 Python re, Java Pattern, PCRE 와 많이 겹칩니다. 주의할 차이점: JavaScript 는 lookahead/lookbehind, 이름 있는 그룹 (/(?
아닙니다. 도구 전체가 이 페이지 안의 JavaScript 입니다. 패턴 컴파일, 매칭, 치환 모두 브라우저에서 네이티브 RegExp 생성자를 통해 실행됩니다. DevTools → Network 를 열어 보면 입력 중에 어떤 요청도 발생하지 않음을 알 수 있습니다. 운영 로그, 고객 이메일 등 서버 도구에 기록되기를 원치 않는 regex 도 안심하고 붙여넣을 수 있습니다.
번호 capture group 은 $1, $2 를, 이름이 있는 그룹은 $<name> 을, 전체 매칭은 $& 를 사용합니다.
.
임의의 문자 (줄바꿈 제외; /s 플래그가 있으면 줄바꿈도 포함)
\d
임의의 숫자 (0-9)
\D
숫자가 아닌 문자
\w
단어 문자 (a-z, A-Z, 0-9, _)
\W
단어가 아닌 문자
\s
공백 문자 (스페이스, 탭, 줄바꿈)
\S
공백이 아닌 문자
\b
단어 경계
^ $
문자열의 시작 / 끝 (또는 /m 플래그가 있으면 줄의 시작 / 끝)
*
직전 요소의 0회 이상 반복
+
직전 요소의 1회 이상 반복
?
직전 요소의 0회 또는 1회 (선택적)
{n,m}
직전 요소의 n회 이상 m회 이하 반복
(...)
Capture group — $1, $2, … 에 저장됩니다
(?:...)
Non-capture group — 캡처 없이 분기를 묶을 때 유용합니다
(?<n>...)
이름 있는 capture group — $<n> 으로 참조합니다
[abc]
문자 클래스 — a, b, c 중 하나
[^abc]
부정 문자 클래스 — a, b, c 를 제외한 모든 문자
a|b
분기 — a 또는 b 와 매칭
(?=...)
Positive lookahead — 뒤에 ~가 오는 경우
(?!...)
Negative lookahead — 뒤에 ~가 오지 않는 경우
(?<=...)
Positive lookbehind — 앞에 ~가 오는 경우
(?<!...)
Negative lookbehind — 앞에 ~가 오지 않는 경우
$1 $<n>
치환 문자열에서의 backreference — 번호 또는 이름으로 지정
구식 도구의 광고, 팝업, 서드파티 추적기 없이 깔끔하고 빠른 regex 플레이그라운드를 원하는 개발자를 위해 만들었습니다.
패턴을 입력하면 테스트 문자열의 모든 매칭이 실시간으로 강조됩니다. capture group 은 인덱스 범위와 내용을 함께 옆에 표시합니다.
치환 모드로 전환하면 String.replace 의 결과를 미리 볼 수 있으며, $1/$2 번호 backreference, $
global, 대소문자 무시, multiline, dotall, unicode, sticky 를 칩 형태로 토글합니다 — 네이티브 RegExp 와 동일한 플래그여서 코드로 옮길 때 의외의 차이가 없습니다.
이메일, URL, IPv4, 전화번호, 날짜, hex 색상, UUID 를 한 번의 클릭으로 적용합니다 — 각 프리셋에는 어떤 입력이 매칭되는지 확인할 수 있는 샘플 문자열도 함께 제공됩니다.
문자 클래스, 수량자, 앵커, 그룹, lookaround 를 위한 빠른 참조 표 — 접고 펼 수 있어서 필요할 때 보고 필요 없을 땐 숨길 수 있습니다.
패턴, 테스트 문자열, 치환 문자열은 모두 브라우저 안에 머무릅니다. DevTools → Network 에서 입력 중에 어떤 요청도 발생하지 않음을 직접 확인할 수 있습니다. 운영 로그와 고객 데이터에 사용해도 안전합니다.
정규식은 외계어처럼 보이지만, 그 뒤에서 동작하는 엔진은 단순합니다.
JavaScript 에서 /foo/ 를 작성하거나 new RegExp('foo') 를 호출하면, 엔진은 패턴을 내부 오토마타 — 입력 텍스트를 따라 이동하는 방법을 아는 상태 기계 — 로 파싱합니다. 컴파일은 단 한 번이며, 매칭은 빠릅니다.
엔진은 테스트 문자열을 따라 커서를 옮깁니다. 각 위치에서 오토마타의 경로를 따르려고 시도하며, 현재 상태를 만족하는 문자가 있으면 커서를 함께 진행시키고, 일치하지 않으면 이전 분기점으로 백트래킹하여 다른 분기를 시도합니다.
패턴 안의 괄호는 capture group 을 엽니다. 엔진이 그 안쪽 매칭에 성공하면, 매칭된 내용을 기억하여 $1, $2 등으로 인덱싱합니다. 이름 있는 그룹 (?<n>...) 은 이름으로 저장됩니다. 이 캡처들은 매칭 객체의 groups 필드에 나타납니다.
String.replace(regex, replacement) 는 동일한 매칭들을 따라가지만, 그것을 반환하는 대신 치환 문자열을 끼워 넣습니다. 치환 문자열의 $1 은 그룹 1 이 캡처한 실제 값이므로 — 단 하나의 regex 로 2024-01-15 를 15/01/2024 로 재포맷할 수 있습니다.
regex 테스터를 꺼내 들게 되는 실제 상황들입니다.
테스터에서 패턴을 만들고, 실제 입력값과 엣지 케이스를 함께 붙여넣어 폼 검증에 반영하기 전에 정확히 무엇이 매칭되는지 확인하세요. 프리셋은 실세계 입력의 95%를 처리하는 합리적인 출발점을 제공합니다.
타임스탬프, ANSI 색상 코드, 가리고 싶은 IP 주소가 뒤섞인 로그 파일이 있나요? 치환 모드에서 \b(?:\d{1,3}\.){3}\d{1,3}\b 같은 패턴과 [REDACTED] 치환을 사용하여 — 실제 파일에 sed 를 돌리기 전에 결과를 미리 봅니다.
IDE 의 찾아 바꾸기는 regex 를 지원하지만, 여러 테스트 케이스에 걸친 실시간 미리보기는 보여주지 않습니다. 코드베이스의 샘플 라인으로 여기서 먼저 패턴을 만들고, 캡처와 치환을 검증한 뒤, 동작하는 regex 를 VS Code / IntelliJ 에 붙여넣으세요.
연락처 덤프에서 모든 이메일 주소를 뽑거나, 영수증에서 모든 달러 금액을 뽑아야 하나요? iKit 에서 매칭 regex 를 만들고 한 줄짜리 스크립트 (text.matchAll(re)) 에 복사해 넣으면, 즉흥적인 파싱 작업이 열 줄짜리 코드가 됩니다.
regex 패턴은 종종 민감한 정보를 담습니다: 고객 ID 의 구조, 내부 API 엔드포인트, 비밀번호 규칙, 가리려는 PII 필드 등. 그것을 서버 측 도구에 붙여넣고 — 실제 테스트 데이터까지 함께 붙여넣으면 — 패턴과 입력이 모두 유출됩니다. iKit 의 regex 테스터는 이미 브라우저 탭에 로드된 JavaScript 입니다.
iKit 블로그의 심층 튜토리얼과 도구 비교 글입니다.
JSON parsing and regex extraction — when each one is the right tool for cleaning up ugly responses.
Regex patterns for spotting Base64 strings in the wild, and how Base64 differs from URL percent-encoding.
JavaScript / ECMAScript regex 입니다 (브라우저의 네이티브 RegExp 와 동일한 엔진). POSIX 의 엄격한 상위 집합이며, 일반적인 기능 면에서 Python re, Java Pattern, PCRE 와 많이 겹칩니다. 주의할 차이점: JavaScript 는 lookahead/lookbehind, 이름 있는 그룹 (/(?
아닙니다. 도구 전체가 이 페이지 안의 JavaScript 입니다. 패턴 컴파일, 매칭, 치환 모두 브라우저에서 네이티브 RegExp 생성자를 통해 실행됩니다. DevTools → Network 를 열어 보면 입력 중에 어떤 요청도 발생하지 않음을 알 수 있습니다. 운영 로그, 고객 이메일 등 서버 도구에 기록되기를 원치 않는 regex 도 안심하고 붙여넣을 수 있습니다.
둘 다 치환 문자열에서의 backreference 입니다. $1, $2, … 는 패턴에 등장한 순서대로 번호 capture group 을 참조합니다 — (foo)(bar) 면 $1 = 'foo', $2 = 'bar' 입니다. $
lookbehind (?<=...) 와 (?
/u (unicode) flag를 켠 다음, pattern 안에서 Unicode property escapes를 사용하세요. `\p{L}`은 모든 문자와 매치됩니다 — ñ, é, 中, ก, ا 포함. `\p{N}`은 ٠-٩ 같은 비라틴 숫자를 포함한 모든 숫자와 매치됩니다. `\p{Emoji}`는 이모지 code points와 매치됩니다. /u 없이는 같은 pattern이 surrogate pair 이모지 (BMP 바깥의 모든 것)에서 조용히 실패하고, 악센트 문자를 별도의 base + combining marks로 취급합니다. /u flag는 엔진에게 입력을 raw UTF-16 code units이 아닌 Unicode code points로 해석하도록 지시합니다 — 따라서 대부분의 언어 간 regex 버그가 하나의 토글로 사라집니다.