정규식 테스트

정규식 테스트: 온라인 정규표현식 검사기

정규식과 텍스트를 입력하면 일치하는 부분이 모두 강조되고, 캡처 그룹마다 무엇을 잡았는지 표로 보여 줍니다. 찾아 바꾸기로 바꾸면 치환 결과도 바로 확인할 수 있습니다. 브라우저에 들어 있는 JavaScript 정규식 엔진을 그대로 쓰는 정규식 테스트 사이트이며, 입력한 내용은 이 페이지 밖으로 나가지 않습니다.

슬래시 없이 입력합니다: /\d+/가 아니라 \d+.
g 모두 찾기 · i 대소문자 무시 · m 여러 줄 · s 점이 줄바꿈과도 일치 · u 유니코드 · v 유니코드 집합 · y 고정 위치 · d 인덱스
모드
정규식 리터럴/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g
JavaScript 코드new RegExp("(?<year>\\d{4})-(?<month>\\d{2})-(?<day>\\d{2})", "g")
플래그모두 찾기(g)
캡처 그룹 수3
이름 있는 그룹year, month, day

계산은 기기 안에서만 이루어집니다 · 공식은 알려진 값으로 검증했습니다 · 검증 방법 보기

정규식 테스트 사용법

  1. 정규식을 입력합니다. 앞뒤의 슬래시는 빼고 /\d+/가 아니라 \d+처럼 씁니다.
  2. 플래그를 정합니다. 옆 칸에 g(모두 찾기), gi(대소문자도 무시)처럼 붙여 씁니다. 한글을 \p{…}로 찾을 때는 u가 꼭 있어야 합니다.
  3. 테스트할 텍스트를 붙여 넣습니다. 일치한 부분이 텍스트 안에 번갈아 가며 다른 색으로 강조되고, 아래 표에 일치마다 위치와 캡처 그룹의 내용이 나옵니다.
  4. 치환을 해 봅니다. 모드에서 찾아 바꾸기를 고르고 바꿀 내용에 $1이나 $<이름>을 넣으면, 바꾼 결과가 복사 버튼과 함께 맨 위에 나옵니다.
  5. 코드로 옮깁니다. 결과에는 정규식 리터럴과, 백슬래시를 두 번씩 써 둔 new RegExp(…) 형태가 함께 나오므로 그대로 복사하면 됩니다.

문법 오류가 있으면 무엇이 문제인지와 고치는 방법을 한국어로 먼저 보여 주고, 브라우저가 낸 원래 메시지를 덧붙입니다.

어떤 정규식 문법인가요?

정규식에는 방언이 있습니다. 이 테스트 도구는 여러분 브라우저의 JavaScript 엔진(Chrome·Edge의 V8, Firefox의 SpiderMonkey, Safari의 JavaScriptCore)으로 패턴을 실행하며, 이 엔진들은 모두 ECMAScript 표준을 따릅니다. 그래서 여기서 동작하는 패턴은 JavaScript, TypeScript, Node.js, React 프로젝트에서도 똑같이 동작합니다. Java(Spring 백엔드), Python, PHP와는 대부분 같지만 몇 가지가 다릅니다.

기능JavaScript(이 도구)Java·Python·PCRE
이름 있는 그룹(?<name>…), 치환에서 $<name>Python은 (?P<name>…), Java는 치환에서 ${name}
소유 수량자 a++, 원자 그룹 (?>…)지원하지 않음Java·PCRE는 지원, Python은 3.11부터
\d, \w, \bASCII만: \w는 한글과 일치하지 않음Python 3는 기본으로 한글도 \w
유니코드 속성 \p{…}u나 v 플래그가 있을 때Java·PCRE는 지원, Python의 re는 미지원
인라인 플래그 (?i)패턴 전체에는 쓸 수 없음지원

Java 코드에 옮길 때는 문자열 안에서 백슬래시를 두 번 써야 하므로 \d는 "\\d"가 됩니다. 결과의 JavaScript 코드 줄이 이미 그렇게 바꿔 둔 형태라 Java에서도 거의 그대로 쓸 수 있습니다.

한글을 찾는 정규식: [가-힣]과 \p{Script=Hangul}

한국어 텍스트를 다룰 때 가장 많이 쓰는 패턴은 [가-힣]입니다. 유니코드에서 ‘가’(U+AC00)부터 ‘힣’(U+D7A3)까지는 현대 한글 완성형 음절 11,172자가 순서대로 놓여 있어서, 이 범위 하나로 모든 음절을 찾을 수 있습니다. 다만 자음이나 모음만 있는 글자는 이 범위 밖에 있습니다. 텍스트 안녕하세요 ㅋㅋㅋ Hello 123에 패턴을 실행하면 다음과 같습니다(이 도구의 코드로 직접 실행한 결과).

패턴플래그찾은 것
[가-힣]+g안녕하세요
[ㄱ-ㅎㅏ-ㅣ]+gㅋㅋㅋ
\p{Script=Hangul}+gu안녕하세요, ㅋㅋㅋ
\w+gHello, 123

자주 쓰는 정규식 모음

복사해서 입력란에 넣고 필요에 맞게 고쳐 쓰세요. ‘예시에서 찾은 것’ 열은 이 도구의 코드로 실제로 실행한 결과입니다.

용도패턴플래그예시에서 찾은 것참고
휴대폰 번호01[016789]-?\d{3,4}-?\d{4}g연락처 010-1234-5678, 01098765432, 02-123-4567 → 010-1234-5678, 01098765432하이픈은 있어도 없어도 됩니다. 지역번호(02 등)로 시작하는 유선 번호는 찾지 않습니다.
사업자등록번호\d{3}-\d{2}-\d{5}g사업자등록번호 123-45-67890 → 123-45-67890자릿수 모양만 봅니다. 실제로 있는 번호인지는 마지막 검증 숫자 계산이나 국세청 조회로 확인해야 합니다.
우편번호(5자리)\b\d{5}\bg서울 강남구 06236, 부산 48058 → 06236, 480582015년부터 쓰는 5자리 국가기초구역번호입니다. 0으로 시작하는 번호가 많으니 숫자가 아니라 문자열로 저장하세요.
이메일 주소(실용형)[\w.+-]+@[\w-]+(?:\.[\w-]+)+g문의 minjun.kim@example.co.kr 또는 help+web@shop.kr → minjun.kim@example.co.kr, help+web@shop.kr.co.kr처럼 점이 여러 개인 도메인도 찾습니다. RFC 5322 전체를 검사하지는 않으며, 주소가 진짜인지는 메일을 보내 봐야 압니다.
한글 단어[가-힣]+g안녕하세요 ㅋㅋㅋ Hello 123 → 안녕하세요완성형 한글 음절만 찾습니다. ㅋㅋㅋ 같은 자음·모음만 있는 글자는 빠집니다.
한글 전체(자모 포함)\p{Script=Hangul}+gu안녕하세요 ㅋㅋㅋ Hello 123 → 안녕하세요, ㅋㅋㅋu 플래그가 꼭 필요합니다. 자음·모음과 옛한글 자모까지 포함합니다.
날짜 YYYY-MM-DD\b\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])\bg출고 2026-10-16, 반품 2026-13-01 → 2026-10-16월은 01–12, 일은 01–31인지만 봅니다. 2026-02-30도 통과하므로 달력 검사는 따로 하세요.

개인정보를 로그에 남기기 전에 가리는 데에도 치환이 유용합니다. 패턴 (\d{6})-\d{7}, 바꿀 내용 $1-*******로 ‘홍길동 900101-1234567’을 바꾸면 “홍길동 900101-*******”이 됩니다(예시 번호는 임의로 만든 것입니다).

예시로 보기

입력란의 기본 패턴 (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})는 연-월-일 형식의 날짜를 찾습니다. \d{4}는 숫자 정확히 네 개이고, 각 부분은 year, month, day라는 이름 있는 그룹에 들어갑니다. g 플래그가 있으므로 예시 텍스트에서 날짜 3개를 찾습니다: 2026-10-16(위치 11), 2026-11-15(위치 36), 2026-09-30(위치 58). 위치는 0부터 세므로, 위치 11는 일치한 부분 앞에 11글자가 있다는 뜻입니다. 한글도 한 글자를 1로 셉니다.

찾아 바꾸기에서 바꿀 내용 $<year>년 $<month>월 $<day>일를 쓰면 첫 줄은 “청구서 1042번은 2026년 10월 16일에 발행되었고 납부 기한은 2026년 11월 15일입니다.”가 됩니다. g 플래그를 빼면 첫 번째 날짜만 바뀝니다.

치명적 백트래킹(ReDoS)

일치에 실패하면 엔진은 되돌아가서 패턴이 일치할 수 있었던 다른 방법을 시도합니다. 보통은 그 수가 적지만, (a+)+, (\w*)*, (a|aa)+처럼 반복 안에 반복이 있으면 같은 텍스트를 나누는 방법이 지수적으로 늘어납니다. a 30개 뒤에 ‘!’가 붙은 텍스트에 (a+)+$를 실행하면 엔진은 포기하기 전까지 약 230, 10억 가지가 넘는 방법을 시도하고, a가 하나 늘 때마다 시간이 두 배가 됩니다.

JavaScript에서는 실행 중인 정규식을 멈출 방법이 없어, 많은 테스트 사이트에서는 이런 패턴이 탭 전체를 멈춰 버립니다. 이 도구는 패턴을 별도의 백그라운드 스레드(Web Worker)에서 실행하고 1초가 지나면 중단한 뒤, 이유와 함께 중첩된 반복을 찾아 짚어 줍니다. 서버의 입력 검증에 이런 패턴이 있으면 서비스 거부 공격(ReDoS)의 원인이 되므로, 피하기보다 고치는 것이 좋습니다. (a+)+$ 대신 a+$, .* 대신 구분자를 뺀 [^,]*처럼 각 부분이 한 가지 방법으로만 일치하게 만드세요.

팁과 한계

개인정보

정규식 실행은 모두 브라우저 안에서 이루어지며, 패턴과 텍스트는 업로드되거나 기록되지 않습니다. 다시 방문했을 때 편하도록 마지막 입력을 이 기기에만 저장하고, 링크 복사는 입력값을 링크의 # 뒤에 넣는데 이 부분은 브라우저가 서버로 보내지 않습니다.

자주 묻는 질문

이 정규식 테스트는 어떤 문법을 쓰나요?

ECMAScript 표준에 정의되어 모든 브라우저에 들어 있는 JavaScript 정규식입니다. JavaScript, TypeScript, Node.js에서와 똑같이 동작하며, Java·Python·PHP와는 대부분 같고 다른 점은 위 표에 정리했습니다.

한글만 찾는 정규식은 무엇인가요?

완성된 음절만이라면 [가-힣]+, ㅋㅋ나 ㅠㅠ 같은 자음·모음까지 포함하려면 [가-힣ㄱ-ㅎㅏ-ㅣ]+ 또는 u 플래그와 함께 \p{Script=Hangul}+를 쓰세요. 한글이 아닌 글자를 찾으려면 [^가-힣]입니다.

Python이나 Java에서는 되는데 여기서는 오류가 나요.

대개 JavaScript에 없는 문법 때문입니다. (?P<name>…), a++ 같은 소유 수량자, 원자 그룹, 맨 앞의 (?i), \A와 \Z가 대표적입니다. 오류 메시지가 문제를 짚어 주고, Python·PCRE 문법이면 JavaScript식 표기도 알려 줍니다.

점이나 괄호 같은 특수문자는 어떻게 찾나요?

앞에 백슬래시를 붙입니다. \.는 마침표, \(는 괄호, \$는 달러 기호와 일치합니다. 대괄호 안에서는 대부분 그대로 문자이므로 [.]도 마침표와 일치합니다.

탐욕적(greedy)과 게으른(lazy) 수량자는 어떻게 다른가요?

.* 같은 탐욕적 수량자는 가능한 한 많이 가져가므로 <b>굵게</b>에서 <.*>는 전체와 일치합니다. 뒤에 ?를 붙인 <.*?>는 첫 번째 >에서 멈춰 <b>와 일치합니다.

이 계산기를 내 사이트에 넣기

웹사이트나 블로그에 무료로 넣을 수 있습니다. 계산기를 표시할 위치에 아래 코드를 붙여 넣으세요.

최종 수정일: 2026년 10월 16일

메뉴

카테고리

금융·대출 계산기17가지 계산기비즈니스·쇼핑 계산기5가지 계산기건강·다이어트 계산기6가지 계산기수학·학습 계산기7가지 계산기날짜·시간 계산기5가지 계산기기념일·행사 디데이 카운트다운7가지 계산기생활에 유용한 계산기6가지 계산기개발자 도구7가지 계산기

CalcWorthy

사이트 소개문의하기개인정보처리방침이용약관

언어

언어
한국어KoreanEnglishEnglishالعربيةArabicবাংলাBanglaDeutschGermanEspañolSpanishفارسیPersianFrançaisFrenchעבריתHebrewहिन्दीHindiBahasa IndonesiaIndonesianItalianoItalian日本語JapaneseBahasa MelayuMalayNederlandsDutchPolskiPolishPortuguêsPortugueseРусскийRussianไทยThaiTürkçeTurkishУкраїнськаUkrainianاردوUrduTiếng ViệtVietnamese简体中文Simplified Chinese