정규식 테스트란?
정규표현식(Regular Expression, 정규식)은 문자열에서 특정 규칙을 가진 부분을 찾거나 바꾸는 패턴 언어입니다. 입력값 검증, 로그 분석, 대량 텍스트 치환 등에 쓰입니다. 이 도구는 브라우저의 JavaScript 정규식 엔진으로 동작하므로 JavaScript·TypeScript 코드에서와 똑같은 결과를 확인할 수 있습니다.
검사는 별도 작업 스레드(Web Worker)에서 실행되어, 잘못된 패턴으로 시간이 오래 걸려도 1.5초 뒤 자동으로 멈추고 화면이 멈추지 않습니다.
사용 방법
- 자주 쓰는 패턴에서 예시를 고르거나 정규식 칸에 직접 입력하세요. 슬래시(/)는 쓰지 않아도 됩니다.
- 필요한 플래그(g, i, m, s, u, y)를 눌러 켜고 끕니다.
- 테스트할 문자열을 입력하면 일치하는 부분이 색으로 표시되고, 아래 목록에 위치와 그룹 값이 나옵니다.
- 치환 문자열에 $1, $<이름>, $&를 넣으면 바꾼 결과를 미리 볼 수 있습니다.
정규식 기본 문법
| 표현 | 의미 | 예 |
|---|---|---|
| \d \w \s | 숫자 / 영문·숫자·_ / 공백 | \d{3} |
| . | 줄바꿈을 뺀 아무 문자 (s 플래그면 포함) | a.c |
| * + ? {n,m} | 0회 이상 / 1회 이상 / 0~1회 / n~m회 | \d{3,4} |
| ^ $ | 시작 / 끝 (m 플래그면 줄마다) | ^\d+$ |
| [가-힣] | 완성형 한글 한 글자 | [가-힣]+ |
| ( ) (?: ) | 캡처 그룹 / 캡처하지 않는 그룹 | (\d{4})-(\d{2}) |
| (?<이름> ) | 이름 있는 그룹 | (?<year>\d{4}) |
| (?= ) (?! ) | 뒤에 오는 것 확인 / 부정 | \d+(?=원) |
플래그 의미
- g (global): 처음 하나가 아니라 일치하는 부분을 모두 찾습니다.
- i (ignoreCase): 대소문자를 구분하지 않습니다.
- m (multiline): ^와 $가 각 줄의 시작·끝에 일치합니다.
- s (dotAll): 점(.)이 줄바꿈 문자에도 일치합니다.
- u (unicode): 이모지 같은 4바이트 문자를 한 글자로 다루고 \p{…} 문법을 쓸 수 있습니다.
- y (sticky): 문자열의 정해진 위치(처음)에서만 일치를 시도합니다.
치명적 백트래킹(ReDoS) 주의
^(a+)+$처럼 반복 안에 반복이 중첩된 패턴은 일치하지 않는 입력에서 경우의 수가 기하급수적으로 늘어나 서버를 멈추게 할 수 있습니다. 이를 ReDoS 공격이라고 합니다. 이 도구에서 시간 초과가 난다면 (a+)+를 a+로 바꾸는 식으로 중첩 반복을 없애세요.
자주 묻는 질문
주민등록번호 패턴으로 진짜 번호인지 확인할 수 있나요?
아니요. 정규식은 생년월일·성별 자리의 형식만 검사합니다. 실제 번호 여부는 확인할 수 없고, 개인정보 보호를 위해 실제 번호를 입력하지 마세요. 입력값은 서버로 전송되지 않습니다.
Java, Python 정규식과 결과가 같나요?
기본 문법은 대부분 같지만 세부 동작이 다를 수 있습니다. 예를 들어 Python은 이름 그룹을 (?P<이름>…)으로 쓰고, Java 문자열에서는 역슬래시를 두 번(\\d) 써야 합니다. 이 도구는 JavaScript(ECMAScript) 기준입니다.
한글만 검사하려면 어떻게 하나요?
완성형 한글은 [가-힣], 자음·모음까지 포함하려면 [ㄱ-ㅎㅏ-ㅣ가-힣]을 씁니다. 문자열 전체가 한글인지 보려면 ^[가-힣]+$처럼 시작과 끝을 고정하세요.
결과가 너무 많으면 어떻게 되나요?
일치는 최대 5,000개까지 찾아 강조하고, 목록 표에는 처음 300개를 보여 줍니다.