정규식 테스터
기기에서 실행되며 아무것도 전송되지 않습니다.모든 작업은 사용자의 기기에서만 이루어집니다. 입력한 내용은 어디로도 전송되지 않습니다.
플래그
자주 쓰는 패턴
테스트 문자열
일치하는 항목이 없습니다
설명
위에 패턴을 입력하면 각 부분이 하는 일을 분석해 보여줍니다
브라우저 안에서만 실시간 일치 강조 표시로 JavaScript 정규식을 테스트, 설명, 디버그하세요.
정규식(regex)은 텍스트를 매칭하거나 찾거나 치환하는 데 사용되는 패턴입니다 - 코드 편집기의 찾기-바꾸기, 폼 유효성 검사, 로그 파싱을 뒷받침하는 것과 동일한 기본 도구입니다. 이 테스터는 JavaScript의 네이티브 정규식 엔진을 브라우저에서 직접 실행합니다. 패턴과 테스트 문자열을 입력하면 모든 일치 항목을 강조 표시하고, 캡처 그룹을 분해하고, 치환 결과를 미리 보여주며, 패턴의 각 부분이 하는 일을 쉬운 말로 설명합니다. 입력한 내용은 어디에도 업로드되지 않습니다.
자주 묻는 질문
이 도구는 어떤 정규식 방언을 사용하나요?
JavaScript에 내장된 정규식 엔진(RegExp와 String.prototype.match/replace 뒤에 있는 엔진)을 사용합니다. 여기서는 모든 작업이 서버가 아니라 브라우저의 클라이언트 측에서 실행되기 때문입니다. PCRE와 매우 유사하지만 몇 가지 차이가 있습니다 - 예를 들어 후방탐색(lookbehind) 지원은 엔진 버전에 따라 다르고, 명명된 그룹은 (?<이름>...) 구문을 사용합니다.
왜 내 패턴이 한 번만 일치하나요?
기본적으로 g(전역) 플래그가 없으면 정규식은 첫 번째 일치 후에 멈춥니다 - 이는 JavaScript에서 RegExp.exec()와 String.match()가 실제로 동작하는 방식을 반영합니다. 테스트 문자열에서 첫 번째 일치 항목만이 아니라 모든 일치 항목을 찾으려면 위에서 g 플래그를 활성화하세요.
(...)와 (?:...)의 차이는 무엇인가요?
둘 다 패턴의 일부를 함께 그룹화하지만, (...) - 캡처 그룹 - 만이 일치한 내용을 저장하여 나중에 참조할 수 있게 합니다(치환에서 $1, $2, ...로, 또는 일치 항목의 그룹 목록에서). (?:...)는 비캡처 그룹으로, 일치 내용을 보관하지 않고 그룹화와 수량자 적용만 수행합니다. 그룹화는 필요하지만 캡처된 텍스트에는 관심이 없을 때 유용합니다.
명명된 그룹과 $<이름> 치환은 어떻게 작동하나요?
번호 대신 이름으로 그룹을 캡처하려면 (...) 대신 (?<이름>...)을 작성하세요. 치환 모드에서는 치환 텍스트에서 $<이름>으로 참조합니다 - 예를 들어 (?<year>\d{4})-(?<month>\d{2})를 $<month>/$<year>로 치환하면 그룹 번호를 기억할 필요 없이 날짜를 재배열할 수 있습니다.
+와 +?처럼 탐욕적(greedy) 수량자와 게으른(lazy) 수량자의 차이는 무엇인가요?
탐욕적 수량자(+, *, {2,4})는 가능한 한 많이 일치시킨 다음, 패턴의 나머지 부분이 일치하도록 필요한 경우에만 물러납니다. 같은 기호 뒤에 ?가 붙은 게으른 수량자는 반대로 가능한 한 적게 일치시키며, 필요할 때만 한 글자씩 확장합니다. 예를 들어 <.+>는 <a><b>에 대해 탐욕적으로 <a><b> 전체와 일치하지만, <.+?>는 게으르게 <a>만 일치시킵니다.
전방탐색과 후방탐색(lookahead/lookbehind)은 문자를 소비하지 않는데 실제로 무엇을 확인하나요?
현재 위치의 바로 앞이나 뒤에 패턴이 나타나는지 확인하되, 그 부분을 일치 결과 자체에는 포함시키지 않습니다 - 즉 (?=...)와 (?<=...)는 앞/뒤에 반드시 있어야 하는 것을 확인하고, (?!...)와 (?<!...)는 있으면 안 되는 것을 확인합니다. 그래서 \d+(?=px)를 사용하면 뒤에 'px'가 오는 숫자만 일치시킬 수 있으며, 'px' 자체는 일치한 텍스트에 결코 나타나지 않습니다.
개발자용: URL에 `q`(패턴)와 `text`(테스트 문자열) 매개변수를 추가해 이 페이지를 열면 - 예: gizke.com/regex?q=\d+&text=There are 42 apples - 둘 다 자동으로 미리 채워집니다. 대부분의 방문자에게는 필요하지 않으며, 바로 사용할 수 있는 예시로 직접 연결하기 위한 기능입니다.