정규식 테스트
브라우저에서 JavaScript 정규식을 로컬로 테스트하고 g/i/m/s/u/y 플래그, 매치 수, 캡처 그룹, 이름 있는 그룹, 줄-열 위치, 네이티브 바꾸기 미리보기를 확인합니다.
/
/g
테스트 텍스트
문자
0 / 50,000
일치 결과
일치를 시작하려면 패턴을 입력하세요.
바꿀 텍스트
문자
0 / 50,000
바꾸기 미리보기
빠른 시작
자주 쓰는 활용 사례
데이터 추출
(\d{4}-\d{2}-\d{2})로 날짜를 추출하고 ([\w.]+@[\w.]+)로 이메일 주소를 추출합니다
형식 검증
정규식을 작성한 뒤 여러 샘플을 붙여 넣고 패턴이 대상 형식에 정확히 맞는지 빠르게 확인합니다
일괄 바꾸기
캡처 그룹으로 내용을 재구성합니다. 예를 들어 패턴 (\S+)\s+(\S+) 과 바꾸기 $2, $1 로 "이름 성"을 "성, 이름"으로 바꿉니다
이름 있는 그룹
(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})로 날짜를 추출한 뒤 $<year>/$<month>/$<day>로 다시 구성합니다
정규식 학습
다양한 패턴을 시도하고 매칭 동작을 관찰해 수량자, 앵커, 문자 클래스를 시각적으로 이해해 보세요
멀티라인 처리
m 플래그를 켜면 ^ 와 $ 가 줄 단위로 매칭되어 로그, 코드, 설정 파일에 유용합니다
활용 팁
제한 사항 및 호환성
개인정보 보호 및 보안
자주 묻는 질문
정규 표현식(Regular Expression, 줄여서 regex)은 특정 구문으로 텍스트 패턴을 기술하는 도구입니다. '고급 검색'이라고 생각하면 됩니다 — 고정된 단어가 아니라 특정 규칙에 맞는 모든 텍스트를 검색합니다.\n\n예를 들어 \\d{4}-\\d{2}-\\d{2}는 모든 '연-월-일' 형식의 날짜를 매칭하고, [\\w.]+@[\\w.]+는 이메일 주소를 매칭합니다. 정규식은 텍스트 검색·추출, 형식 검증, 일괄 치환에 널리 사용됩니다.\n\n거의 모든 프로그래밍 언어와 도구(VS Code, grep, sed)가 정규식을 지원합니다. 이 도구는 JavaScript RegExp 엔진을 사용합니다.
JavaScript 정규식은 기본적으로 첫 번째 매칭만 반환합니다. 이는 도구의 제한이 아닌 언어 사양입니다. 플래그 바에서 g를 클릭하여 전역 검색을 활성화하세요.\n\ng와 y의 상호작용에 주의하세요: g는 텍스트 전체를 스캔하지만, y(스티키)는 이전 매칭 바로 뒤에서 시작해야 합니다. 보통 g만 켜면 충분합니다.
주요 원인은 네 가지입니다. 1. 괄호가 맞지 않음: 모든 (에는 대응하는 )가, 모든 [에는 대응하는 ]가 필요합니다. IDE가 자동 완성하더라도 이 도구는 입력된 패턴을 그대로 검사합니다. 2. 수량자 위치 오류: *, +, ?, {n}은 반복 가능한 요소 뒤에 와야 합니다. *+ 또는 ?* 같은 조합은 유효하지 않으며, lazy 수량자는 *? 또는 +?처럼 씁니다. 3. 이스케이프가 끝나지 않음: 끝에 단독으로 있는 \는 유효하지 않습니다. \d, \n, \\처럼 구체적인 문자를 이스케이프해야 합니다. 4. Unicode 속성에 u 플래그가 없음: \p{L}, \p{Script=Han} 같은 property escape는 이 도구에서 u 플래그가 필요합니다.
JavaScript의 String.prototype.replace()에서 쓰는 바꾸기 참조입니다. - $1, $2, ..., $99: 1번째부터 99번째까지의 캡처 그룹 내용. - $&: 전체 매치 텍스트. - $`: 매치 앞의 텍스트. - $': 매치 뒤의 텍스트. - $<name>: 이름 있는 캡처 그룹 (?<name>...)의 내용. 예를 들어 (\w+)\s(\w+)가 “hello world”에 매치될 때 $2-$1로 바꾸면 “world-hello”가 됩니다. 바꾸기 문자열에 $ 자체를 넣으려면 $$를 사용하세요.
언어마다 정규식 엔진은 주로 세 부분에서 다릅니다. 1. 지원 구문: JavaScript는 PCRE의 재귀 패턴 (?R), 조건 분기 (?(cond)yes|no), 원자 그룹 (?>...)을 지원하지 않습니다. Python의 re 모듈도 지원하지 않지만, 별도 regex 모듈은 일부를 지원합니다. Java는 원자 그룹은 지원하지만 재귀는 지원하지 않습니다. 2. Unicode 처리: JavaScript의 \w는 주로 기본 라틴 문자, 숫자, 밑줄을 의미합니다. u 플래그를 켜도 한자를 자동으로 매치하지 않습니다. Unicode 문자를 찾으려면 \p{L} 같은 property escape와 u 플래그를 사용하세요. 3. 줄바꿈 의미: Python의 .은 기본적으로 \n과 매치되지 않습니다(JavaScript와 동일). Java의 Pattern.DOTALL은 JavaScript의 s 플래그와 비슷합니다. 이 도구로 JavaScript RegExp를 빠르게 확인한 뒤, 최종적으로는 대상 언어의 실제 엔진에서 검증하세요.