정규식 테스트
브라우저에서 실제 텍스트로 바로 패턴을 테스트하세요.
| # | 종류 | 값 | 위치 |
|---|
브라우저에서 실행됩니다. 입력한 내용은 어디로도 전송되지 않습니다.
- 실시간 일치 항목 강조
- 이름 있는 그룹과 번호 그룹 지원
- 워커에서 안전하게 실행
정규식 테스트 방법
- 패턴을 입력하거나 붙여넣고 필요한 플래그를 선택하세요.
- 일치시킬 텍스트를 붙여넣으세요.
- 강조된 일치 항목, 그룹 표, 치환 미리보기를 확인하세요.
정규식 문법 빠른 참조
| 패턴 | 일치하는 대상 |
|---|---|
| \d | 0부터 9까지의 모든 숫자 |
| \w | 모든 문자, 숫자, _ 문자 |
| \s | 모든 공백 문자 |
| + | 바로 앞 토큰의 1회 이상 반복 |
| * | 바로 앞 토큰의 0회 이상 반복 |
| ? | 0회 또는 1회, 또는 수량자를 게으르게 만듦 |
| ^와 $ | 문자열 또는 줄의 시작과 끝 |
JavaScript 정규식 기능
| 기능 | 문법 | 참고 |
|---|---|---|
| 이름 있는 그룹 | (?<name>...) | ES2018부터 지원 |
| 후방탐색(lookbehind) | (?<=...) 및 (?<!...) | ES2018부터 지원 |
| 유니코드 모드 | u 플래그 | \p{Letter} 같은 유니코드 속성 이스케이프에 필요 |
| 대소문자 무시 | i 플래그 | 다른 대부분의 언어와 같은 방식 |
패턴 작성 팁
- . ( ) [ ] 같은 특수문자를 문자 그대로 쓰려면 백슬래시로 이스케이프하세요.
- 나중에 참조할 필요가 없는 그룹에는 비캡처 그룹 (?:...)을 사용하세요.
- 탐욕적 수량자는 가능한 한 많이 일치시킵니다. +? 처럼 뒤에 ?를 붙이면 가능한 가장 빠른 지점에서 멈추는 게으른 매칭이 됩니다.
- 예상한 텍스트만이 아니라 빈 문자열이나 여분의 공백 같은 경계 사례도 테스트하세요.
정규식 테스트 자주 묻는 질문
패턴이 갑자기 응답하지 않는 이유는 무엇인가요?
일부 패턴은 특정 텍스트에서 지수적으로 백트래킹할 수 있습니다. 매칭은 1.5초 제한이 있는 백그라운드 워커에서 실행되므로 폭주하는 패턴은 탭을 멈추게 하는 대신 중단됩니다.
각 플래그는 무엇을 의미하나요?
g는 첫 번째뿐 아니라 모든 일치를 찾고, i는 대소문자를 무시하고, m은 ^와 $를 줄 단위로 일치시키고, s는 점이 줄바꿈에도 일치하게 하고, u는 완전한 유니코드 모드를 켜고, y는 마지막 위치에 매칭을 고정하고, d는 각 일치의 시작·끝 위치를 추가합니다.
치환 입력란이 테스트 텍스트를 바꾸나요?
아니요. String.replace가 만들어낼 결과를 별도의 결과란에 보여줄 뿐이므로, 입력한 테스트 문자열은 그대로 유지됩니다.
이름 있는 캡처 그룹도 지원하나요?
네. (?<name>...) 형태로 그룹을 작성하면 일치 항목 표의 그룹 번호 옆에 이름이 표시됩니다.
입력한 텍스트가 어딘가로 전송되나요?
아니요. 매칭은 사용자의 브라우저 탭 안 워커에서 실행되며, 입력한 내용은 페이지 밖으로 나가지 않습니다.
어떤 정규식 방식을 사용하나요?
브라우저에 내장된 JavaScript RegExp 엔진으로, 웹 앱이나 Node.js 스크립트를 만들 때 패턴을 실행하는 것과 동일한 엔진입니다.
치명적 백트래킹(catastrophic backtracking)이란 무엇인가요?
(a+)+b처럼 중첩된 반복 그룹이 있는 패턴이 입력이 단 한 글자만 늘어나도 실패까지 걸리는 시간이 기하급수적으로 늘어나는 현상입니다. 여기서는 1.5초 워커 타임아웃이 페이지가 멈추기 전에 그런 패턴을 잡아냅니다.
^와 $가 문자열 전체가 아니라 각 줄의 시작과 끝에도 일치할 수 있나요?
네, m(여러 줄) 플래그를 켜세요. 켜지 않으면 ^와 $는 테스트 문자열 전체의 시작과 끝에만 일치합니다.