정규식 (Regex) 테스터
정규표현식 패턴과 플래그를 입력하면 테스트 문자열에서 일치하는 부분을 실시간으로 하이라이트하고, 일치한 문자열 목록과 위치를 함께 보여줍니다.
이메일·전화번호 검증, 로그 파싱, 문자열 치환 규칙 설계 등에 활용됩니다.
적용 기준: ECMA-262 정규식 규격 기준 (브라우저 내장 엔진 사용) · 2026-08-30 확인 · 편집 원칙 및 발행인 정보
정규식 매칭 처리 방식
new RegExp(패턴, 플래그) 로 정규식 객체를 생성 후, 테스트 문자열에 대해 matchAll()(g 플래그) 또는 match() 실행
패턴 작성 시 유의점
- 자주 쓰는 문법 요약 — 문자 클래스: \d(숫자) \w(단어 문자) \s(공백) [가-힣](한글) / 수량자: *(0회 이상) +(1회 이상) ?(0~1회) {n,m}(n~m회) / 위치: ^(시작) $(끝) \b(단어 경계) / 그룹과 선택: (…)로 묶고 |로 "또는"을 표현합니다.
- g(전역) 플래그를 켜면 문자열 전체에서 일치하는 모든 부분을 찾고, 끄면 첫 번째 일치 결과만 확인합니다.
- i 플래그는 대소문자를 구분하지 않고, m 플래그는 ^ $ 가 각 줄의 시작·끝에 매칭되도록, s 플래그는 .(점)이 줄바꿈 문자까지 포함하도록 동작을 바꿉니다.
- 수량자는 기본이 탐욕(greedy)이라 가능한 한 길게 매칭합니다. <.+>를 HTML에 적용하면 첫 < 부터 마지막 > 까지 통째로 잡히는데, 뒤에 ?를 붙인 게으른 수량자(<.+?>)로 바꾸면 태그 하나씩 잡힙니다 — 실무에서 가장 자주 틀리는 지점입니다.
- 패턴 문법이 잘못되면(괄호 미매칭 등) 자바스크립트 정규식 엔진의 오류 메시지를 그대로 보여줘 원인을 빠르게 파악할 수 있습니다.
- 이메일·전화번호·URL 등 자주 쓰는 패턴은 프리셋 버튼으로 바로 불러와 수정해 사용할 수 있습니다.
이런 때 유용해요
- 회원가입 폼의 이메일 형식 검증 규칙을 만들 때, 실제 입력 예시 여러 개를 테스트 문자열에 넣고 프리셋 패턴이 의도한 대로 매칭되는지 미리 확인합니다.
- 서버 로그에서 IP 주소만 추출하고 싶을 때, IP 주소 프리셋 패턴을 로그 텍스트에 적용해 몇 건이 매칭되는지, 어떤 값이 추출되는지 바로 확인합니다.
자주 묻는 질문
g 플래그를 껐을 때와 켰을 때 결과가 다른 이유는 무엇인가요?
g 플래그가 없으면 문자열에서 처음 발견되는 일치 항목 하나만 찾고 검색을 멈추지만, g 플래그가 있으면 문자열 끝까지 검색해 일치하는 모든 항목을 반환합니다.
정규식에 한글이 포함되어도 매칭되나요?
네, [가-힣]와 같이 유니코드 범위를 지정하면 한글 문자에도 정상적으로 매칭됩니다.
특수문자를 그대로 검색하려면 어떻게 하나요?
. * + ? ( ) [ ] { } 같은 정규식 특수문자를 문자 그대로 검색하려면 앞에 백슬래시(\)를 붙여 이스케이프해야 합니다.
패턴을 입력했더니 브라우저가 느려지거나 멈추는 이유는 무엇인가요?
(a+)+ 나 (.*)* 처럼 수량자가 중첩된 패턴은 일치하지 않는 긴 입력을 만나면 재시도(백트래킹) 횟수가 기하급수로 늘어 멈춘 것처럼 보일 수 있습니다.
같은 원리로 서버를 마비시키는 공격을 ReDoS라고 부릅니다. 수량자 중첩을 피하고 문자 클래스를 구체적으로 지정하면(예: .* 대신 [^"]*) 이런 폭발을 예방할 수 있습니다.
여기서 만든 패턴을 Python이나 Java에서 그대로 써도 되나요?
기본 문법(\d, 수량자, 그룹, 앵커)은 대부분 호환되지만 세부 동작이 다릅니다.
자바스크립트의 \d는 아라비아 숫자만 매칭하지만 다른 엔진에서는 유니코드 숫자까지 잡기도 하고, 후방탐색(lookbehind)·명명 그룹 문법의 지원 범위도 엔진마다 다릅니다.
옮겨 쓸 때는 해당 언어의 테스트 코드로 한 번 더 검증하는 것이 안전합니다.
참고 자료
이용 시 유의사항
입력한 내용은 브라우저 안에서만 처리되며 서버로 전송되지 않습니다. 이 도구는 브라우저의 ECMAScript 정규식 엔진을 쓰므로, 같은 패턴이라도 PCRE·Python·Java에서는 동작이 다를 수 있습니다.