정규식 테스트와 디버깅
이 테스터가 하는 일
정규식은 이메일 형식, 날짜, 전화번호처럼 반복적으로 나타나는 문자열의 패턴을 간결하게 나타낸 표현입니다. 이 도구는 입력한 패턴을 브라우저의 JavaScript 정규식 엔진으로 컴파일하고, 무언가를 바꿀 때마다 테스트 텍스트에 즉시 적용합니다. 별도의 '실행' 단계가 없습니다. 일치한 부분은 텍스트 위에 그대로 강조 표시되고, 상세 패널에는 각 매치의 캡처 그룹과 문자 위치가 나열됩니다.
JavaScript와 Node.js의 RegExp와 같은 엔진을 사용하므로, 여기서 보이는 결과가 실제 코드의 동작과 그대로 일치합니다.
언제 사용하나요
패턴이 예상대로 동작하지 않을 때 가장 먼저 열어 보게 되는 도구입니다. console.log를 여기저기 넣고 스크립트를 다시 돌리는 대신, 대표적인 텍스트를 붙여 넣고 패턴을 손보면 강조 표시가 실시간으로 바뀝니다. 패턴을 처음부터 만들 때도 유용해서, 느슨하게 시작한 다음 원하는 부분만 켜질 때까지 조금씩 좁혀 갈 수 있습니다.
매치 총 개수, 그룹 수, 패턴과 텍스트 길이, 처리 시간 같은 실시간 통계는 파국적 백트래킹이나 실수로 탐욕적이 된 수량자를 운영 환경에 반영하기 전에 잡아내는 단서가 됩니다.
예시: 날짜 인식하기
로그에서 ISO 형식의 날짜를 뽑아내고 싶다고 해 봅시다. 패턴 (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) 는 2026-07-18 에 일치하며 year, month, day 라는 세 개의 명명된 그룹으로 나눕니다. 플래그 g 를 켜면 첫 번째뿐 아니라 텍스트 안의 모든 날짜가 잡힙니다. \d{2} 를 \d{1,2} 로 바꾸면 2026-7-8 처럼 한 자리 월도 허용됩니다.
참고 사항과 엣지 케이스
플래그에 따라 동작이 크게 달라집니다. i 는 대소문자를 구분하지 않게 하고, m 은 ^ 와 $ 가 각 줄에 걸리도록 하며, s 는 점(.)이 줄바꿈에도 일치하게 하고, u 는 완전한 유니코드 처리를 켭니다. . * + ? ( ) [ ] { } \ | ^ $ 같은 문자는 특별한 의미를 가지므로, 문자 그대로 일치시키려면 백슬래시로 이스케이프해야 합니다. 예를 들어 리터럴 점은 아무 문자에나 일치하는 . 이 아니라 \. 으로 씁니다. 이름 없는 그룹은 여는 괄호가 나타나는 순서대로 1부터 번호가 매겨지고, (?:...) 는 아무것도 캡처하지 않는 그룹을 만듭니다.