본문으로 건너뛰기
Case Converter Online
ko

정규식 테스트 (정규표현식 테스터)

정규표현식과 테스트 텍스트를 입력하면 일치하는 부분이 입력하는 대로 강조 표시됩니다. 캡처 그룹을 확인하고, 코드에 넣기 전에 찾아 바꾸기 결과를 미리 볼 수 있습니다.

플래그

일치 결과

0

패턴을 입력하면 일치 결과가 나타납니다.

일치 상세 정보와 그룹

그룹은 $1 또는 $<name>, 전체 일치는 $&로 씁니다.

정규식 테스터가 하는 일

정규표현식(regular expression, 줄여서 정규식 또는 regex)은 텍스트를 찾기 위한 작은 패턴 언어입니다. \d{4}는 “숫자 네 개가 연속으로”라는 뜻이고, [\w.+-]+@는 “단어 문자, 점, 더하기 기호, 하이픈 중 하나 이상이 오고 그 뒤에 @가 오는 것”이라는 뜻입니다. 정규식은 코드 에디터의 찾아 바꾸기, 폼 유효성 검사, 로그 분석, 데이터 정리에 쓰입니다. 이 페이지에서는 정규식 테스트를 설치 없이 바로 해 볼 수 있습니다.

패턴은 미묘하게 틀리기 쉽습니다. 테스터를 쓰면 스크립트에 넣기 전에 실제 예시 텍스트에 패턴을 적용해 무엇이 걸리는지 정확히 볼 수 있습니다. 이 테스터는 입력하는 대로 일치 결과를 보여 주고, 모든 캡처 그룹을 나열하며, 바꾸기 결과를 미리 보여 줍니다.

정규식 테스터 사용 방법

  1. 정규식 칸에 패턴을 입력합니다. 앞뒤 슬래시는 빼고 씁니다. 도구가 슬래시를 대신 표시하고, 닫는 슬래시 뒤에 켜진 플래그를 보여 줍니다.
  2. g, i, m, s, u, y 버튼으로 플래그를 켜고 끕니다.
  3. 테스트 텍스트에 예시 텍스트를 붙여넣거나 입력합니다.
  4. 일치 결과에서 결과를 확인합니다. 일치하는 부분마다 강조 표시되고, 카운터에 찾은 개수가 나옵니다.
  5. 일치 상세 정보와 그룹에서 각 일치의 위치와 그룹별로 잡힌 텍스트를 확인합니다.
  6. 찾아 바꾸기를 시험하려면 바꿀 내용에 입력합니다. 바뀐 텍스트가 결과에 나타나며 바로 복사할 수 있습니다.

어디서 시작할지 모르겠다면 자주 쓰는 패턴에서 하나를 고르세요. 이메일 주소, 웹 주소, 날짜, IPv4 주소, 16진수 색상 코드, 전화번호, 숫자, 연속 공백 패턴이 있습니다. 전화번호 패턴은 미국식 형식용이라서 010-1234-5678 같은 한국 휴대폰 번호와는 일치하지 않습니다. 한국 번호는 아래 한글 예시의 패턴을 참고하세요.

플래그

플래그 이름 바뀌는 점
g global 첫 번째뿐 아니라 모든 일치를 찾습니다
i ignore case hello가 Hello, HELLO와도 일치합니다
m multiline ^와 $가 각 줄의 시작과 끝에서 일치합니다
s dot all .이 줄바꿈 문자와도 일치합니다
u unicode 이모지를 한 글자로 읽고 \p{...} 클래스를 쓸 수 있습니다
y sticky 각 일치가 직전 일치가 끝난 위치에서 정확히 시작해야 합니다

예시

다음 결과는 이 도구에서 패턴을 실행해 얻은 것입니다.

패턴 플래그 텍스트 일치 결과
\d+ 없음 a1 b22 c333 1
\d+ g a1 b22 c333 1, 22, 333
hello gi Hello hello HELLO Hello, hello, HELLO
^\w+ gm 두 줄: one two와 three four one, three
a.b g a, 줄바꿈, b 일치 없음
a.b gs a, 줄바꿈, b 1개 일치

페이지를 열면 날짜 예제가 들어 있습니다. 패턴 (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})는 예시 텍스트에서 2026-10-31, 2024-01-15, 2026-11-02 세 개의 날짜를 찾습니다. 바꿀 내용 $<day>/$<month>/$<year>는 첫 번째 날짜를 31/10/2026으로 바꿉니다. 같은 패턴에 $<year>년 $<month>월 $<day>일을 쓰면 2026-10-31이 2026년 10월 31일이 됩니다.

바꾸기는 텍스트 정리에도 편리합니다. 패턴 \s{2,}에 공백 한 칸을 바꿀 내용으로 쓰면 too many spaces가 too many spaces로 바뀝니다.

한글 정규식 예시

한글을 다룰 때 알아 두면 좋은 패턴입니다. 모두 이 도구의 코드로 확인한 결과입니다.

패턴 플래그 텍스트 일치 결과
[가-힣]+ g 서울 Seoul 부산 Busan 2026년 서울, 부산, 년
\w+ g 서울 Seoul 부산 Seoul
[가-힣]+ g 한글 English 漢字 ㄱㄴ 한글
\p{Script=Hangul}+ gu 한글 English 漢字 ㄱㄴ 한글, ㄱㄴ
01[016789]-\d{3,4}-\d{4} g 연락처: 010-1234-5678, 02-123-4567, 011-123-4567 010-1234-5678, 011-123-4567
  • JavaScript의 \w는 영문자, 숫자, 밑줄만 뜻하므로 한글과 일치하지 않습니다.
  • [가-힣]은 완성형 한글 음절만 잡고 ㄱㄴ 같은 낱자는 잡지 않습니다. 자음과 모음까지 포함하려면 u 플래그를 켜고 \p{Script=Hangul}을 쓰세요.
  • 위의 휴대폰 번호 패턴은 02-123-4567 같은 지역 번호와는 일치하지 않습니다.

작동 원리

테스터는 패턴과 플래그로 JavaScript RegExp를 만든 뒤 테스트 텍스트에 실행합니다. g 플래그가 켜져 있으면 끝까지 계속 찾습니다. 빈 일치가 나오면 한 칸 건너뛰므로 x* 같은 패턴도 무한 반복에 빠지지 않습니다.

텍스트는 강조 표시하기 전에 이스케이프됩니다. 예시 텍스트에 들어 있는 HTML이나 스크립트는 일반 문자로 표시될 뿐 실행되지 않습니다.

매칭은 백그라운드 스레드인 Web Worker에서 이루어집니다. 패턴 실행이 1초를 넘으면 워커를 중지하고 새 워커를 시작합니다. 탭이 멈추는 대신 메시지가 표시됩니다.

패턴이 올바르지 않으면 브라우저의 오류 메시지가 표시됩니다. 예를 들어 ( 하나만 쓰면 닫히지 않은 그룹이라는 뜻의 “Unterminated group”이 나옵니다.

팁과 한계

  • 중첩 반복을 조심하세요. (a+)+$나 (\w+\s?)*$ 같은 패턴은 거의 일치하는 텍스트에서 엄청나게 오래 걸릴 수 있습니다. 이를 치명적 백트래킹이라고 합니다. 각 부분이 구체적인 것과 일치하도록 만들고, 반복 안에 반복을 넣지 마세요.
  • 특수 문자는 이스케이프하세요. 실제 점과 일치시키려면 \.라고 씁니다. ? * + ( ) [ ] { } ^ $ |와 백슬래시 자체도 마찬가지입니다.
  • 검증 패턴에는 앵커를 거세요. 폼 입력값을 검사할 때는 패턴을 ^와 $로 감싸야 값의 일부가 아니라 전체가 일치해야 통과합니다.
  • 정규식은 완전한 파서가 아닙니다. 텍스트에서 이메일이나 날짜를 찾아내기에는 충분하지만, HTML을 파싱하거나 이메일 주소가 실제로 존재하는지 확인하는 믿을 만한 방법은 아닙니다.
  • 결과가 아주 많으면 제한됩니다. 일치는 최대 5,000개까지 나열하고, 상세 표에는 처음 300행을 보여 줍니다.

정규식을 테스트하는 다른 방법

명령줄에서는 grep -oE가 일치 결과를 한 줄에 하나씩 출력합니다.

echo 'Call 555-010-9999 on 2026-10-31' | grep -oE '[0-9]{4}-[0-9]{2}-[0-9]{2}'

이 명령은 2026-10-31을 출력합니다. Python에서는 re.findall(r'\d{4}-\d{2}-\d{2}', 'from 2026-10-31 to 2024-01-15')가 ['2026-10-31', '2024-01-15']를 반환합니다. JavaScript에서는 text.match(/pattern/g)를 쓰고, 그룹이 필요하면 text.matchAll()을 씁니다.

관련 도구

웹 주소에 쓸 제목을 정리하려면 URL 슬러그 생성기를 쓰세요. 링크 안에 텍스트를 안전하게 넣으려면 URL 인코딩 디코딩 도구를 이용하세요.

정규식 테스터 자주 묻는 질문

이 테스터는 어떤 정규식 엔진을 쓰나요?

브라우저에 내장된 JavaScript 엔진을 쓰므로, 결과는 JavaScript와 Node.js의 RegExp와 같습니다. 간단한 패턴은 대부분 Python, PHP, Java에서도 똑같이 동작하지만, 후방 탐색(lookbehind), 이름 있는 그룹, 유니코드 클래스 같은 기능은 언어마다 조금씩 다를 수 있습니다.

왜 일치 결과가 하나만 보이나요?

g 플래그가 꺼져 있기 때문입니다. g 플래그가 없으면 JavaScript 정규식은 첫 번째 일치에서 멈춥니다. g 버튼을 누르면 테스트 텍스트 안의 모든 일치를 찾습니다.

1초 후 중지되었다는 메시지는 무슨 뜻인가요?

패턴이 이 텍스트에서 너무 오래 걸렸다는 뜻이며, 대개 치명적 백트래킹(catastrophic backtracking)이 원인입니다. (a+)+나 (.*)* 같은 중첩 반복은 엔진이 엄청나게 많은 경로를 시도하게 만듭니다. 테스터는 백그라운드 워커에서 매칭을 실행하다가 이를 중지하므로 페이지가 멈추지 않습니다. 반복을 더 구체적으로 바꾼 뒤 다시 시도하세요.

바꿀 내용에서 캡처 그룹은 어떻게 쓰나요?

번호 그룹은 $1, $2처럼, 이름 있는 그룹은 $<name>, 전체 일치는 $&로 씁니다. 예를 들어 패턴 (\w+)@(\w+)에 바꿀 내용으로 $2 at $1을 쓰면 a@b c@d가 b at a d at c로 바뀝니다.

테스트 텍스트가 어딘가로 전송되나요?

아니요. 매칭은 브라우저 안에서 실행됩니다. 입력한 내용은 업로드되거나 저장되지 않습니다.

코드와 데이터 도구 더 보기

전체 도구 보기