정규식 테스터가 하는 일
정규표현식(regular expression, 줄여서 정규식 또는 regex)은 텍스트를 찾기 위한 작은 패턴 언어입니다. \d{4}는 “숫자 네 개가 연속으로”라는 뜻이고, [\w.+-]+@는 “단어 문자, 점, 더하기 기호, 하이픈 중 하나 이상이 오고 그 뒤에 @가 오는 것”이라는 뜻입니다. 정규식은 코드 에디터의 찾아 바꾸기, 폼 유효성 검사, 로그 분석, 데이터 정리에 쓰입니다. 이 페이지에서는 정규식 테스트를 설치 없이 바로 해 볼 수 있습니다.
패턴은 미묘하게 틀리기 쉽습니다. 테스터를 쓰면 스크립트에 넣기 전에 실제 예시 텍스트에 패턴을 적용해 무엇이 걸리는지 정확히 볼 수 있습니다. 이 테스터는 입력하는 대로 일치 결과를 보여 주고, 모든 캡처 그룹을 나열하며, 바꾸기 결과를 미리 보여 줍니다.
정규식 테스터 사용 방법
- 정규식 칸에 패턴을 입력합니다. 앞뒤 슬래시는 빼고 씁니다. 도구가 슬래시를 대신 표시하고, 닫는 슬래시 뒤에 켜진 플래그를 보여 줍니다.
- g, i, m, s, u, y 버튼으로 플래그를 켜고 끕니다.
- 테스트 텍스트에 예시 텍스트를 붙여넣거나 입력합니다.
- 일치 결과에서 결과를 확인합니다. 일치하는 부분마다 강조 표시되고, 카운터에 찾은 개수가 나옵니다.
- 일치 상세 정보와 그룹에서 각 일치의 위치와 그룹별로 잡힌 텍스트를 확인합니다.
- 찾아 바꾸기를 시험하려면 바꿀 내용에 입력합니다. 바뀐 텍스트가 결과에 나타나며 바로 복사할 수 있습니다.
어디서 시작할지 모르겠다면 자주 쓰는 패턴에서 하나를 고르세요. 이메일 주소, 웹 주소, 날짜, 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 인코딩 디코딩 도구를 이용하세요.