GRE Word Reference
GRE 빈출 어휘 정의/예문/빈도순 참조
정규식 테스터
실시간 매칭과 그룹 캡처로 JavaScript 정규식을 테스트하세요.
GRE Word Reference 소개
정규식 테스터는 JavaScript 정규표현식을 실시간으로 작성, 디버깅, 테스트할 수 있는 무료 브라우저 기반 도구입니다. 패턴 문자열과 선택적 플래그(g: 전체 검색, i: 대소문자 무시, m: 다중행, s: dotAll)를 입력하고 테스트 문자열을 붙여넣으면 도구가 JavaScript 기본 RegExp 엔진으로 정규식을 즉시 실행합니다. 모든 매치는 테스트 문자열 표시 영역에서 노란색으로 하이라이트되어 패턴이 무엇을 캡처하는지 한눈에 확인할 수 있습니다.
개발자, 데이터 분석가, QA 엔지니어, 정규식을 학습하는 학생들이 코드에 패턴을 삽입하기 전에 프로토타이핑과 검증에 이 도구를 사용합니다. 브라우저 콘솔에서 정규식을 실행하는 것과 달리, 이 테스터는 전체 매치 수, 각 매치의 텍스트, 문자열 내 0 기반 문자 인덱스, 그리고 모든 번호 캡처 그룹의 내용을 명확한 시각적 출력으로 보여줍니다.
기술적으로 도구는 글로벌 플래그가 설정된 경우 JavaScript의 RegExp.exec()를 루프로 실행하여 모든 매치를 수집한 후, 매치/비매치 세그먼트 경계를 재구성하여 하이라이트 뷰를 렌더링합니다. 잘못된 정규식 패턴은 페이지 오류 없이 JS 엔진의 상세 오류 메시지를 표시합니다. 모든 처리는 네트워크 요청 없이 완전히 클라이언트 사이드에서 이루어집니다.
주요 기능
- 기본 JavaScript RegExp 엔진을 사용한 실시간 정규식 실행
- 테스트 문자열에서 매치 세그먼트를 노란색으로 하이라이트
- 패턴과 플래그(g, i, m, s, u) 별도 입력 필드 제공
- 하이라이트 결과 위에 전체 매치 수 표시
- 매치별 상세 패널: 매치 텍스트, 문자 인덱스, 캡처 그룹 값 표시
- 괄호가 포함된 패턴의 번호 캡처 그룹(그룹 1, 2...) 결과 표시
- 잘못된 정규식 구문에 대한 상세 오류 메시지 표시 (페이지 중단 없음)
- 완전 클라이언트 사이드 — 서버 전송 없음, 모든 키 입력 시 즉각적 결과
자주 묻는 질문
이 테스터가 지원하는 정규식 플래그는 무엇인가요?
표준 JavaScript 정규식 플래그를 지원합니다: g(전체 - 첫 번째 매치만이 아닌 모든 매치 검색), i(대소문자 무시 매칭), m(다중행 - ^와 $가 각 줄의 시작/끝에 매칭), s(dotAll - . 메타문자가 개행 문자에도 매칭), u(유니코드 모드). 플래그 필드에 예를 들어 "gi"와 같이 입력하세요.
결과에서 캡처 그룹은 어떻게 작동하나요?
캡처 그룹은 정규식에서 괄호로 묶인 하위 패턴으로, 예를 들어 (\w+)나 (\d{4}) 같은 형태입니다. 각 매치에 대해 도구는 전체 매치 텍스트와 함께 각 그룹이 캡처한 값을 보여줍니다. 그룹 1은 첫 번째 괄호, 그룹 2는 두 번째 괄호입니다. 그룹이 매치에 참여하지 않은 경우 "undefined"로 표시됩니다.
캡처 그룹이 왜 "undefined"로 표시되나요?
캡처 그룹은 선택적 분기(alternation)의 일부로서 해당 분기가 매치되지 않았을 때 "undefined"가 됩니다. 예를 들어 패턴 (a)|(b)에서 "b"가 매치되면 그룹 1은 undefined, 그룹 2는 "b"입니다. ?를 사용하는 선택적 그룹도 0회 매치될 때 undefined일 수 있습니다.
여러 줄에 걸쳐 매칭하려면 어떻게 해야 하나요?
m(다중행) 플래그를 사용하면 ^가 각 줄의 시작에, $가 각 줄의 끝에 매칭됩니다. s(dotAll) 플래그를 사용하면 . 메타문자가 개행 문자도 포함하여 매칭합니다. "ms"를 플래그 필드에 입력하면 여러 줄에 걸친 패턴을 매칭할 수 있습니다.
g 플래그를 사용한 패턴이 왜 무한 루프에 빠질 수 있나요?
a*, \s*, .*처럼 빈 문자열에 매칭될 수 있는 패턴은 글로벌 플래그와 함께 사용하면 무한 루프가 발생할 수 있습니다. 각 길이 0 매치 후 정규식 엔진이 앞으로 이동하지 않기 때문입니다. 이 테스터는 길이 0 매치 후 lastIndex를 증가시켜 루프 중단을 방지합니다.
이메일 주소 정규식 패턴을 어떻게 테스트하나요?
패턴 필드에 [\w.+-]+@[\w-]+\.[\w.-]+와 같은 패턴을 입력하고, 플래그를 "g"로 설정하여 모든 이메일을 찾은 다음, 테스트 문자열 필드에 텍스트 본문을 붙여넣으세요. 도구가 찾은 모든 이메일 주소를 하이라이트하고 텍스트 내 위치와 함께 목록으로 표시합니다.
룩어헤드나 룩비하인드 어설션을 사용할 수 있나요?
네. JavaScript는 긍정 룩어헤드(?=...), 부정 룩어헤드(?!...), 긍정 룩비하인드(?<=...), 부정 룩비하인드(?<!...)를 지원합니다. 이것들은 문자를 소비하지 않고 위치만 매칭하는 제로 너비 어설션입니다. 이 테스터는 기본 JS 엔진을 사용하므로 명명된 캡처 그룹(?<name>...) 등 ES2018+ 정규식 기능이 모두 지원됩니다.
이 도구가 Node.js나 백엔드 JavaScript의 정규식 테스트에도 적합한가요?
네. 이 테스터는 Node.js를 구동하는 것과 동일한 V8 JavaScript 엔진을 사용하므로, 여기서 작동하는 패턴은 Node.js에서도 동일하게 작동합니다. 단, Python re, Java java.util.regex, PCRE 등 다른 언어의 정규식 엔진은 JavaScript RegExp와 구문 및 기능이 다를 수 있습니다.