정규식 테스터
패턴을 입력하면 일치한 곳과 그룹, 위치를 바로 보여 줍니다.
입력값은 브라우저 밖으로 나가지 않음ECMAScript기준일 2026.10.03
대상 텍스트
일치 표시
결과가 여기에 나타납니다
정규식 테스터 사용 방법
- 1「정규식」 칸에 앞뒤 슬래시 없이 패턴을 입력하거나 「예시 넣기」를 누릅니다.
- 2「대상 텍스트」에 검사할 글을 붙여 넣고 필요한 플래그를 고릅니다. 일치한 곳이 바로 강조됩니다.
- 3모드를 「바꾸기」나 「나누기」로 바꿔 결과를 확인한 뒤 「복사」나 「내려받기」를 누릅니다.
정규식 테스터 옵션
- 플래그
- g는 모든 일치를 찾습니다(기본 켬). i는 대소문자를 무시합니다. m은 ^와 $가 줄마다 일치하게 합니다. s는 점(.)이 줄바꿈과도 일치하게 합니다. u는 유니코드 모드입니다. y는 지금 위치에서만 찾습니다. d는 그룹마다 시작·끝 위치를 함께 보여 줍니다. v(유니코드 집합)는 지원하는 브라우저에서만 보이고 u와 함께 쓸 수 없습니다.
- 모드
- 찾기는 일치 목록을 보여 줍니다. 바꾸기는 바꾼 뒤의 텍스트를 보여 주며 바꿀 문자열에 $1, $<name>, $&를 쓸 수 있습니다. 나누기는 String.prototype.split처럼 일치하는 곳마다 텍스트를 나눕니다.
- 시간 제한
- 패턴은 최대 1초 동안 실행합니다. 더 걸리면 실행을 멈추고 안내를 보여 줍니다. 이 제한은 바꿀 수 없습니다.
문법: PCRE가 아니라 JavaScript
이 도구는 JavaScript(ECMAScript) 문법입니다. PCRE·Python·Java와 다른 점은 아래 표를 보세요.
패턴은 브라우저에 내장된 정규식 엔진이 ECMAScript 명세에 따라 실행합니다. 여기서 본 결과는 같은 브라우저의 JavaScript 코드에서 RegExp가 돌려주는 결과와 같습니다.
| 기능 | JavaScript | PCRE (PHP) | Python re |
Java |
|---|---|---|---|---|
| 이름 그룹 | (?<name>…) |
(?<name>…) 또는 (?P<name>…) |
(?P<name>…) |
(?<name>…) |
| 이름으로 역참조 | \k<name> |
\k<name> 또는 (?P=name) |
(?P=name) |
\k<name> |
| 바꿀 문자열의 그룹 | $1, $<name> |
$1 또는 \1 |
\1, \g<name> |
$1, ${name} |
인라인 플래그 (?i) |
지원 안 함. 플래그를 고릅니다 | 지원 | 맨 앞에서 지원 | 지원 |
원자 그룹 (?>…), a++ |
지원 안 함 | 지원 | 3.11부터 지원 | 지원 |
뒤쪽 탐색 (?<=…) |
길이 제한 없음 | 길이 상한이 있어야 함 | 고정 길이만 | 길이 상한이 있어야 함 |
\A, \Z 앵커 |
지원 안 함. ^와 $를 씁니다 |
지원 | 지원 | 지원 |
재귀 (?R) |
지원 안 함 | 지원 | 지원 안 함 | 지원 안 함 |
| 공백·주석을 허용하는 모드 | 지원 안 함 | x 플래그 |
re.VERBOSE |
Pattern.COMMENTS |
\d |
ASCII 숫자만 | 기본은 ASCII | 모든 유니코드 숫자 | 기본은 ASCII |
시간 제한을 두는 이유
JavaScript 엔진은 대부분 역추적 방식으로 일치를 찾습니다. (a+)+$처럼 반복 안에 반복이 있는 패턴은 텍스트가 거의 일치하다가 어긋날 때 글자가 하나 늘 때마다 시간이 두 배로 늘어납니다. 서른 글자만으로도 몇 초씩 걸립니다. 이 도구는 모든 패턴을 별도의 백그라운드 스레드에서 실행하고, 1초가 지나면 멈춘 뒤 다음 입력을 위해 새로 시작합니다. 그래서 입력이 멈추지 않습니다.
정규식 테스터 예시
전화번호 찾기 (플래그 g)
1줄은 패턴, 2줄은 대상 텍스트입니다. 일치 2개: 인덱스 5(그룹 010, 1234, 5678)와 인덱스 33.
입력
(\d{3})-(\d{4})-(\d{4}) 연락처: 010-1234-5678, 02-123-4567, 010-9876-5432출력
010-1234-5678 010-9876-5432
그룹을 써서 바꾸기
모드: 바꾸기. 2줄이 바꿀 문자열입니다. $1과 $3은 첫째·셋째 그룹입니다.
입력
(\d{3})-(\d{4})-(\d{4}) $1-****-$3 연락처: 010-1234-5678, 02-123-4567, 010-9876-5432출력
연락처: 010-****-5678, 02-123-4567, 010-****-5432
이름 그룹
입력
(?<year>\d{4})-(?<m>\d{2}) 2026-10출력
year: 2026 m: 10
역추적이 끝나지 않는 패턴
1초가 지나면 실행을 멈추고, 페이지는 계속 쓸 수 있습니다.
입력
(a+)+$ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaab
출력
패턴이 너무 오래 걸립니다
닫지 않은 그룹
입력
(
출력
정규식 문법 오류
예시는 이 도구를 검증하는 기준 사례의 값입니다.
정규식 테스터 자주 묻는 질문
입력값이 서버로 전송되나요?
아니요. 입력과 결과는 이 브라우저 안에서만 처리되며 저장하지도 않습니다. 새로 고침하면 사라집니다.
PHP·Python·Java에서 쓰던 패턴이 왜 오류가 나나요?
정규식 문법은 언어마다 다릅니다. (?i) 같은 인라인 플래그, 원자 그룹, 소유 수량자, \A 같은 앵커는 JavaScript에 없습니다. 이 페이지의 표에서 대신 쓸 문법을 확인하세요.
「패턴이 너무 오래 걸립니다」는 무슨 뜻인가요?
패턴 실행이 1초를 넘었다는 뜻입니다. (a+)+처럼 반복 안에 반복이 있으면 엔진이 시도하는 경로가 급격히 늘어나는데, 이를 역추적 폭주라고 합니다. 화면이 멈추지 않도록 실행을 중단합니다. (a+)+$ 대신 a+$처럼 중첩을 없애 보세요.
인덱스와 줄·열은 어떻게 세나요?
인덱스는 JavaScript 문자열 인덱스(UTF-16 코드 단위)로, match.index와 같은 값입니다. 줄과 열은 1부터 세고 열은 글자(코드 포인트) 기준이라 이모지도 1열입니다.
텍스트와 일치 개수는 얼마나 처리할 수 있나요?
대상 텍스트는 최대 5MB까지 넣을 수 있습니다. 1MB까지는 입력하는 대로 처리하고 그보다 크면 「실행」을 눌러 처리합니다. 일치는 앞 10,000개까지 강조하고 목록에 보여 주며, 전체 개수는 항상 알려 줍니다.
관련 도구
처리 방식·표준
- 처리 위치: 이 브라우저 (내 기기). 전송하거나 저장하지 않습니다.
- 표준: ECMAScript
- 엔진: 브라우저에 내장된 RegExp 엔진 (ECMAScript) (브라우저 내장)
- 브라우저마다 엔진이 달라 v 플래그 같은 새 문법은 일부 브라우저에서 쓸 수 없습니다. 지원하지 않는 문법은 정규식 문법 오류로 알려 줍니다.
- Safari의 엔진은 역추적이 지나치게 길어지면 스스로 멈추고 일치 없음으로 돌려줍니다. 그래서 빠른 기기에서는 (a+)+$ 같은 패턴이 시간 제한 안내 대신 「일치 없음」으로 나올 수 있습니다.
- a*처럼 빈 문자열과 일치한 곳은 강조 영역에 가는 막대로 표시합니다.
- 모드와 플래그만 기억합니다. 패턴, 대상 텍스트, 바꿀 문자열은 저장하지 않습니다.
- 기준일 2026.10.03
- 변경 이력: 2026.10.03 처음 공개