정규식 치트시트
신규정규 표현식 토큰 및 플래그의 검색 가능한 참조 자료.
Live regex tester
Type a pattern and a test string — matches highlight instantly, with every capture group broken out below.
Common regex patterns
Battle-tested patterns — load one into the tester to see it run, or copy it straight out.
[\w.+-]+@[\w-]+\.[\w.-]+ https?:\/\/[^\s]+ \(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4} (\d{4})-(\d{2})-(\d{2}) ([01]?\d|2[0-3]):[0-5]\d \b(?:\d{1,3}\.){3}\d{1,3}\b #(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{3})\b [a-z0-9]+(?:-[a-z0-9]+)* -?\d+ (?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,} \b(\w+)\s+\1\b [ \t]+$ Regex cheat sheet
Every token, grouped with a quick example. Search by symbol or keyword; click any token to copy it.
No tokens match your search.
Regex flavors: JavaScript, Python, Java, PCRE & grep
The tester above runs JavaScript regex. Most syntax is shared — here's what differs between engines.
| Feature | JavaScript | Python (re) | Java | PCRE / grep |
|---|---|---|---|---|
| Named group | (?<name>…) | (?P<name>…) | (?<name>…) | (?P<name>…) |
| Dotall (. matches \n) | s flag | re.DOTALL / (?s) | Pattern.DOTALL | (?s) |
| Ignore case | i flag | re.IGNORECASE / (?i) | (?i) flag | (?i) / grep -i |
| Lookbehind | (?<=…) ES2018+ | Supported | Supported | grep -P only |
| Backslash in source | /\d/ literal | r"\d" raw string | "\\d" doubled | \d |
| Find every match | str.matchAll(/…/g) | re.findall() | Matcher.find() | grep -o |
| POSIX class [[:digit:]] | use \d instead | use \d instead | supported | supported |
Runs entirely in your browser. Nothing is uploaded.
예제와 라이브 테스터가 포함된 정규식 치트시트
이 정규식 치트시트는 모든 정규표현식 토큰을 한 번에 검색할 수 있도록 정리하였으며, 찾아본 패턴을 즉시 시험해 볼 수 있는 라이브 테스터와 함께 제공됩니다. 패턴을 입력하고 플래그를 선택한 뒤 테스트 문자열을 붙여 넣으면 일치 항목이 즉시 강조 표시되고 각 캡처 그룹도 하단에 표시됩니다.
설치가 필요 없고 계정을 만들 필요도 없습니다. 전체 정규표현식 레퍼런스는 브라우저에서 실행되므로 테스트하는 텍스트가 외부로 전송되지 않습니다. 광고 없음, 로그인 불필요, 테스트 문자열 크기 제한 없음.
예제와 함께 정리된 모든 정규식 토큰
이 레퍼런스는 실제로 자주 사용하는 문법을 모두 다룹니다. 문자 클래스(\d, \w, \s 및 [a-z]와 같은 사용자 정의 집합), 앵커 및 경계(^, $, \b), 수량자(*, +, ?, {n,m} 및 게으른 형태), 그룹과 교대, 룩어헤드 및 룩비하인드, 플래그 g i m s u y, 그리고 점(.)과 슬래시(/)를 리터럴로 매칭하기 위한 이스케이프까지 정리되어 있습니다.
모든 항목에는 짧고 구체적인 예제가 포함되어 있어 의미를 직관적으로 파악할 수 있습니다. 예를 들어 \bcat\b는 단어 'cat'에는 일치하지만 'category'에는 일치하지 않습니다. 기호나 키워드로 정규식 토큰을 검색하고 클릭하여 복사하세요.
패턴을 작성하면서 바로 테스트하세요
정적인 치트시트로는 패턴이 실제로 동작하는지 알 수 없습니다. 내장된 정규식 테스터는 입력한 표현식을 실시간으로 컴파일하고, 샘플 텍스트에서 모든 일치 항목을 강조 표시하며, 각 일치에 대한 번호 있는/이름 있는 캡처 그룹 목록을 보여 줍니다.
global, case-insensitive, multiline, dotall, Unicode, sticky 플래그를 전환하며 결과가 바뀌는 것을 확인해 보세요. 패턴이 유효하지 않으면 자동 실패 대신 알기 쉬운 오류 메시지가 표시됩니다. 패턴이 실시간으로 일치하는 것을 눈으로 확인하는 것이 정규식을 배우는 가장 빠른 방법입니다.
바로 복사해 쓸 수 있는 자주 쓰는 정규식 패턴
반복해서 사용하는 패턴들이 있습니다. 이메일 주소, URL, 전화번호, ISO 날짜, IPv4 주소, 헥스 색상 코드, 강력한 비밀번호 검사 등이 그 예입니다. '자주 쓰는 패턴' 섹션은 검증된 버전을 제공합니다. 테스터에 바로 불러와 예제 텍스트에서 동작을 확인하거나 코드에 복사하여 사용하세요.
이 패턴들은 만능 규칙이 아니라 상황에 맞게 수정할 수 있는 실용적인 출발점입니다. 바로 그렇기 때문에 실제 데이터로 테스트하는 것이 중요합니다.
regex101.com 및 regexr.com과의 비교
regex101.com은 웹에서 가장 인기 있는 전문 정규식 도구입니다. 이유가 있습니다. PCRE, Python re, Golang, Java, .NET, JavaScript 등 여섯 가지 정규식 플레이버를 지원하고, 토큰별 설명 패널을 제공하며, 매칭 기록을 추적합니다. 복잡한 프로덕션 패턴을 디버깅하거나 PHP와 Python 간에 패턴이 동일하게 동작하는지 검증해야 한다면 regex101이 적합합니다. regexr.com도 커뮤니티 패턴 라이브러리와 함께 비슷한 경험을 제공합니다.
이 UtiloKit 페이지는 워크플로에서 다른 위치에 있습니다. 검색 가능한 토큰 레퍼런스 표와 라이브 테스터를 같은 화면에 결합하여, 대략 무엇이 필요한지는 알지만 정확한 문법이 기억나지 않는 흔한 상황에 최적화되어 있습니다. 페이지를 열고, 토큰을 찾아보고, 빠른 테스트 문자열을 붙여 넣고, 에디터로 돌아가면 됩니다. 탭 전환 없음, 계정 불필요, 광고 없음. 룩비하인드가 (?<=…)인지 (?<!…)인지 확인하러 regex101을 하루에도 수십 번 여는 개발자라면 전용 검색 가능 레퍼런스가 측정 가능하게 더 빠릅니다. 두 도구를 함께 사용하세요. 깊은 디버깅에는 regex101, 빠른 참조에는 이 페이지를 활용하시기 바랍니다.
정규식 플레이버: JavaScript, Python, Java, PCRE, grep
대부분의 정규식 문법은 이식 가능하지만 엔진마다 세부 사항이 다릅니다. 이 테스터는 Node.js 및 브라우저와 동일한 플레이버인 JavaScript 정규식을 사용합니다. Python re 모듈은 r"\d+"와 같은 원시 문자열을 사용하고 그룹 이름은 (?P<name>…)로 지정합니다. Java는 문자열 리터럴에서 백슬래시를 두 번 써야 합니다. PCRE(PHP, grep -P)는 가장 기능이 풍부하며, POSIX grep -E는 고유한 이스케이프 방식이 있습니다.
플레이버 표는 각 엔진에서 명명된 그룹, dotall, 대소문자 무시, 룩비하인드, '전체 찾기'의 차이를 정리하였습니다. 파이썬 정규식 치트시트 패턴을 JavaScript로 이전하거나 그 반대 방향으로 이전할 때 예상치 못한 문제 없이 작업할 수 있습니다.
그리디 vs 게으른 수량자, 그 외 주의사항
거의 모두가 겪는 두 가지 함정이 있습니다. 첫째, 수량자는 그리디(탐욕적)합니다. .+는 가능한 한 많이 가져가므로, 단일 HTML 태그를 매칭하려면 보통 게으른 .+?를 사용해야 합니다. 둘째, 메타문자 이스케이프를 잊는 것입니다. 그냥 .는 모든 문자에 일치하지만 \.는 리터럴 점에만 일치합니다. 따라서 가격 정규식에는 \d+\.\d{2}가 필요합니다.
작업하는 동안 이 치트시트를 열어 두면 이런 실수를 미리 방지할 수 있습니다.
비공개, 즉시 사용, 무료
설치 없이 바로 사용할 수 있으며 계정을 만들 필요도 없습니다. 모든 검색, 모든 매칭, 모든 복사는 브라우저 내에서 로컬로 처리됩니다. 입력한 패턴과 테스트 데이터는 기기 밖으로 전송되지 않습니다. 이 정규식 치트시트를 북마크에 추가하고, 토큰이 기억나지 않거나 패턴을 빠르게 확인해야 할 때마다 활용하세요.
Frequently asked questions
정규식이란 무엇인가요? 예제로 설명해 주세요.
정규 표현식(정규식, regex)은 문자열 집합을 설명하는 간결한 패턴으로, 텍스트를 검색·매칭·치환하는 데 사용됩니다. 예를 들어 패턴 \d{3}-\d{4}는 555-1234와 같은 전화번호 일부에 일치합니다. 여기서 \d는 '숫자 하나'를 의미하고 {3}은 '정확히 세 번 반복'을 의미합니다. 정규식은 거의 모든 프로그래밍 언어와 코드 편집기에서 찾기·바꾸기, 폼 유효성 검사, 로그 파싱 등에 활용됩니다. 이 페이지 상단의 라이브 테스터에서 모든 패턴을 즉시 시험해 볼 수 있습니다.
정규식의 기본 토큰에는 어떤 것이 있나요?
기본 구성 요소는 다음과 같습니다. .(개행 제외 모든 문자), \d(숫자), \w(단어 문자 — 알파벳, 숫자, 밑줄), \s(공백), 앵커 ^(시작) 및 $(끝), 그리고 수량자 *(0회 이상), +(1회 이상), ?(선택적)입니다. 따라서 \w+는 단어 전체에, \d+는 2024 같은 숫자 전체에 일치합니다. 조합하면 ^\d+$는 숫자만으로 이루어진 줄에 일치합니다. 이 치트시트의 모든 토큰에는 복사 가능한 예제가 포함되어 있습니다.
\d, \w, \s는 각각 무엇을 의미하나요?
\d는 0~9의 숫자 하나에, \w는 단어 문자(a~z, A~Z, 0~9 또는 _)에, \s는 공백(스페이스, 탭 또는 개행)에 일치합니다. 대문자 버전은 부정입니다. \D는 비숫자, \W는 비단어 문자, \S는 비공백입니다. 예를 들어 'a5 b'라는 텍스트에서 \d는 5에, \w는 a, 5, b에, \s는 그 사이의 공백에 일치합니다. 이 세 가지 단축 클래스는 일상적인 정규식 패턴의 대부분을 커버합니다.
정규식 앵커란 무엇인가요?
앵커는 문자가 아닌 위치에 일치합니다. ^는 문자열의 시작(m 플래그 사용 시 각 줄의 시작)에, $는 끝에, \b는 단어 경계에, \B는 비단어 경계에 일치합니다. 예를 들어 ^\d+$는 숫자만으로 이루어진 문자열에 일치하고, \bcat\b는 단어 'cat'에는 일치하지만 'category' 안의 'cat'에는 일치하지 않습니다. 앵커는 문자 매처가 아닌 위치 매처임을 자주 혼동하는 경우가 많습니다.
정규식에서 수량자란 무엇인가요?
수량자는 이전 토큰이 몇 번 반복될 수 있는지를 지정합니다. *는 0회 이상, +는 1회 이상, ?는 0회 또는 1회(선택), {n}는 정확히 n회, {n,}는 n회 이상, {n,m}는 n회 이상 m회 이하입니다. 기본적으로 그리디(가능한 한 많이 매칭)하며, ?를 붙이면 게으르게(가능한 한 적게 매칭) 됩니다. 예를 들어 \d{1,3}은 1~3자리 숫자에, 게으른 .+?는 가능한 한 적은 문자에 일치합니다. HTML 태그나 따옴표로 감싼 문자열을 매칭할 때 게으른 수량자가 필수입니다.
그룹과 캡처 그룹이란 무엇인가요?
괄호(…)는 추출하거나 재사용할 수 있는 캡처 그룹을 만듭니다. (\d{4})-(\d{2})는 '2024-06'에서 연도를 그룹 1에, 월을 그룹 2에 캡처합니다. 수량자를 위해 그룹화만 필요하고 캡처는 필요 없을 때는 (?:…)를 사용하고, (?<year>\d{4})처럼 이름 있는 그룹에는 (?<name>…)을 사용합니다. \1과 같은 역참조는 그룹 1이 캡처한 내용을 다시 매칭합니다. 예를 들어 (\w)\1은 'hello'의 'll'처럼 반복된 글자를 찾습니다.
룩어헤드와 룩비하인드는 무엇인가요?
룩어라운드는 텍스트를 소비하지 않으면서 매칭 옆에 특정 텍스트가 있는지(또는 없는지) 확인합니다. (?=…)는 긍정 룩어헤드, (?!…)는 부정 룩어헤드, (?<=…)는 긍정 룩비하인드, (?<!…)는 부정 룩비하인드입니다. 예를 들어 \d+(?=px)는 '5px'에서 5에 일치하지만 'px'는 포함하지 않고, (?<=\$)\d+는 '$9'에서 달러 기호가 앞에 있는 9에 일치합니다. 룩어라운드는 현대 정규식 엔진을 POSIX grep과 구분하는 기능 중 하나입니다.
정규식 플래그에는 어떤 것이 있나요?
플래그는 패턴 전체의 동작 방식을 변경합니다. g(global)은 모든 일치 항목을 찾고, i는 대소문자를 구분하지 않으며, m(multiline)은 ^와 $가 각 줄에 일치하도록 하고, s(dotall)는 .이 개행 문자에도 일치하도록 하며, u는 전체 유니코드를 활성화하고, y(sticky)는 고정 위치에서 매칭을 앵커링합니다. JavaScript에서는 닫는 슬래시 뒤에 플래그를 추가합니다. 예를 들어 /cat/gi는 텍스트 전체에서 'Cat'과 'CAT'에도 일치합니다. 이 페이지의 테스터에는 각 플래그의 토글 버튼이 있어 효과를 실시간으로 확인할 수 있습니다.
이메일 주소, 전화번호, URL에 사용하는 정규식은 어떻게 작성하나요?
실용적인 시작 패턴은 다음과 같습니다. 이메일: [\w.+-]+@[\w-]+\.[\w.-]+ ; URL: https?:\/\/[^\s]+ ; 한국 휴대전화: 01[016789]-?\d{3,4}-?\d{4} (010-1234-5678 및 01012345678 모두 매칭). 이 패턴들은 실용적인 것이지 완전한 규격은 아닙니다. 공식 이메일 표준은 훨씬 더 복잡하므로 실제 데이터로 위 라이브 테스터에서 테스트하는 것이 중요합니다. '자주 쓰는 패턴' 목록에서 각 패턴을 클릭 한 번으로 불러올 수 있습니다.
정규식에서 특수 문자를 이스케이프하는 방법은?
메타문자를 리터럴로 매칭하려면 앞에 백슬래시를 붙이면 됩니다. 주로 이스케이프가 필요한 문자는 . ^ $ * + ? ( ) [ ] { } | \ 및 /입니다. 예를 들어 \.는 리터럴 점에 일치하고 \$는 달러 기호에 일치하므로, \d+\.\d{2}는 19.99와 같은 가격에 일치합니다. 문자 클래스([…]) 안에서는 대부분의 특수 문자가 특별한 의미를 잃으므로 [.]도 이스케이프 없이 리터럴 점에 일치합니다.
JavaScript, Python, Java의 정규식 문법이 서로 다른가요?
핵심 문법은 공통이지만 세부 사항이 다릅니다. JavaScript는 그룹 이름을 (?<name>…)으로, Python은 (?P<name>…)으로 지정합니다. Python은 r"\d+"와 같은 원시 문자열을 사용하고, Java는 문자열 리터럴에서 백슬래시를 두 번 써야 합니다("\\d+"). dotall은 JS에서 s 플래그, Python에서 re.DOTALL, Java에서 Pattern.DOTALL입니다. 이 페이지의 플레이버 표는 Python, Java, PCRE, grep 각각에서 명명된 그룹, dotall, 대소문자 무시, 룩비하인드, '전체 찾기'의 차이를 정리하여 언어 간에 패턴을 이전할 때 참고하실 수 있습니다.
Python에서 정규식은 어떻게 사용하나요?
Python에서 정규식은 내장 re 모듈에 있습니다. 보통 패턴을 원시 문자열로 작성하고 re.search, re.findall, re.sub 같은 함수를 호출합니다. 예를 들어 re.findall(r"\d+", "a1 b22")는 ['1', '22']를 반환합니다. 이름 있는 그룹은 (?P<name>…)으로 만들고 match.group('name')으로 읽습니다. 이 페이지의 토큰 레퍼런스는 Python 정규식에도 직접 적용됩니다. 주변 API와 일부 플래그 이름만 JavaScript와 다릅니다.
정규식을 어떻게 테스트하나요?
이 페이지 상단의 라이브 테스터를 사용하세요. 슬래시 사이에 패턴을 입력하고, 필요한 플래그를 켜고, 테스트 문자열을 붙여 넣으면 됩니다. 일치 항목이 실시간으로 강조 표시되고, 번호 있는/이름 있는 캡처 그룹이 하단에 표시되며, 유효하지 않은 패턴은 자동 실패 대신 인라인 오류 메시지를 보여 줍니다. 모든 것이 브라우저에서 로컬로 실행되므로 붙여 넣은 내용은 외부로 전송되지 않습니다. regex101.com이나 regexr.com도 비슷하게 동작하며, 이 페이지는 레퍼런스와 테스터를 한 페이지에 결합하고 있습니다.
이 도구와 regex101.com, regexr.com의 차이점은 무엇인가요?
regex101.com은 정규식 디버깅의 업계 표준입니다. PCRE, Python, Java, .NET, Golang 등 여러 플레이버를 지원하고 패턴의 모든 토큰에 대한 상세 설명을 제공합니다. regexr.com은 커뮤니티 패턴 라이브러리와 함께 비슷한 경험을 제공합니다. 두 도구 모두 훌륭한 전문 도구입니다. 이 UtiloKit 치트시트는 다른 포지션에 있습니다. 토큰 레퍼런스 표와 기본 라이브 테스터를 같은 페이지에 결합하여, 무언가를 빠르게 찾아보고 몇 초 안에 확인할 수 있도록 탭 전환 없이 설계되었습니다. 복잡한 프로덕션 정규식 작업에는 regex101.com의 플레이버 비교와 상세 디버거가 더 적합하며, 개발 중 빠른 참조에는 이 레퍼런스 페이지가 더 빠르게 로드되고 별도 탐색이 필요 없습니다.
'정규 표현식'이라는 이름은 어디서 유래했나요?
이름은 형식 언어 이론에서 유래합니다. 1950년대에 수학자 스티븐 클레이니(Stephen Kleene)는 단순한 유한 상태 기계가 인식할 수 있는 언어인 '정규 집합(regular sets)'을 기술하였으며, 그가 사용한 표기법이 정규 표현식으로 알려지게 되었습니다. 현대 정규식 엔진은 역참조와 룩어라운드 같이 엄밀한 의미의 '정규' 언어를 벗어나는 기능을 추가하였지만, 역사적인 이름은 그대로 남아 있습니다.
Related tools
모든 도구 보기HTML 엔티티 인코더 / 디코더
HTML 엔티티를 이스케이프 및 언이스케이프, 숫자 인코딩 선택 가능.
Cron 표현식 빌더
Cron 스케줄을 평어로 설명하고 다음 실행 시간 미리보기.
HTML 미니파이어
주석 제거와 공백 축소로 HTML 압축.
CSS 미니파이어
주석 및 불필요한 공백 제거로 CSS 축소.
JSON 이스케이프 / 언이스케이프
원시 텍스트를 JSON 안전 문자열로 이스케이프하고 다시 언이스케이프.
HTTP 상태 코드
HTTP 상태 코드를 평어로 설명하는 검색 가능한 참조 자료.