~ / developer / regex-tester

/.*/ Regex Lab

타이핑하는 즉시 매칭 결과를 보여주는 정규식 테스터. JavaScript(ECMAScript) 문법 기준.

/ /
ready.
test string
highlight0 matches
matches & groups
replace
→
cheatsheet — 클릭하면 패턴에 삽입

사용법

  1. / … / 사이 입력칸에 패턴을 씁니다. 슬래시는 따로 입력하지 않아도 됩니다.
  2. 위쪽 체크박스로 플래그 g i m s u를 켜고 끕니다(기본은 g).
  3. test string에 텍스트를 넣으면 highlight에 일치 부분이 칠해지고, 오른쪽 위에 매칭 개수가 나옵니다.
  4. matches & groups 표에서 각 매칭의 위치(@index)와 캡처 그룹 $1, 이름 그룹 <name> 값을 확인합니다.
  5. replace에 치환 문자열을 넣으면 String.replace 결과를 바로 미리 봅니다.
  6. 하단 cheatsheet 항목을 클릭하면 커서 위치에 해당 문법이 삽입됩니다. sample은 이메일 추출 예제를 불러옵니다.

정규표현식이란?

정규표현식(Regular Expression)은 "이런 모양의 문자열"을 기호로 표현한 패턴입니다. 이메일·전화번호 형식 검사, 로그에서 특정 줄 뽑기, 대량 찾아 바꾸기 등에 씁니다. 이 테스터는 브라우저의 RegExp를 그대로 쓰므로 JavaScript(ECMAScript) 문법 기준이며, Python이나 Java와는 일부 문법이 다를 수 있습니다.

플래그 정리

플래그이름효과
gglobal모든 일치를 찾음 (끄면 첫 번째만)
iignore case대소문자 무시
mmultiline^ $가 각 줄의 시작·끝에 일치
sdotAll.이 줄바꿈까지 포함
uunicode이모지 등 서로게이트 쌍을 한 글자로, \p{…} 사용

자주 쓰는 패턴 예시

치환 문자열에서는 $1(번호 그룹), $<name>(이름 그룹), $&(일치 전체)를 쓸 수 있습니다.

패턴 옆 copy 버튼은 /패턴/플래그 형태의 리터럴을 복사하므로 JavaScript 코드에 바로 붙여넣을 수 있고, replace 패널의 copy는 치환이 끝난 전체 텍스트를 복사합니다. 문법이 틀리면 패턴 아래에 브라우저의 오류 메시지가 빨간색으로 표시됩니다.

표에는 최대 200개 매칭까지, 개수는 5,000개까지 셉니다. 빈 문자열에 일치하는 패턴(예: a*)은 개수에는 잡히지만 하이라이트되지 않습니다. 중첩 반복((a+)+ 같은 형태)은 긴 텍스트에서 브라우저를 멈추게 할 수 있으니 주의하세요.

자주 묻는 질문

정규식은 맞는 것 같은데 하나만 매칭돼요
g 플래그가 꺼져 있으면 첫 번째 일치에서 멈춥니다. 플래그 영역에서 g를 체크하세요. 여러 줄에서 ^, $를 쓴다면 m도 필요합니다.
Python 정규식도 여기서 테스트할 수 있나요?
기본 문법(문자 클래스, 수량자, 그룹, lookaround)은 거의 같아서 대부분 그대로 통합니다. 다만 이름 그룹은 Python이 (?P<name>…), JavaScript가 (?<name>…)로 다르고, 인라인 플래그 (?i)는 JavaScript에서 쓸 수 없습니다.
.* 가 너무 많이 잡혀요
*, +는 기본적으로 탐욕적(greedy)이라 가능한 한 길게 잡습니다. 뒤에 ?를 붙인 .*?(lazy)를 쓰면 가장 짧은 일치를 찾습니다.
점(.)이나 괄호 자체를 찾고 싶어요
특수문자는 앞에 백슬래시를 붙여 이스케이프합니다. 예: \., \(, \$. 대괄호 안에서는 [.]처럼 대부분 그대로 써도 됩니다.

관련 도구

이 도구와 함께 보면 좋은 글