> 웹 프론트엔드 > JS 튜토리얼 > JavaScript Regex에서 그룹의 여러 발생을 캡처하는 방법은 무엇입니까?

JavaScript Regex에서 그룹의 여러 발생을 캡처하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-11 03:16:03
원래의
452명이 탐색했습니다.

How to Capture Multiple Occurrences of a Group in JavaScript Regex?

JavaScript Regex에서 임의 그룹 캡처

정규 표현식을 사용하여 그룹을 캡처할 때는 특정 패턴에 따른 제한 사항을 이해하는 것이 중요합니다. 반복 캡처 그룹을 사용하여 여러 항목을 일치시킬 수 있지만 JavaScript에서는 마지막 캡처만 유지됩니다.

다음 예를 고려하세요.

"foo bar baz".match(/^(\s*\w+)+$/)
로그인 후 복사

이 패턴에서 캡처 그룹(s *w )는 수량자를 사용하여 반복됩니다. 그러나 JavaScript의 정규식 엔진은 중간 일치 항목이 아닌 마지막 항목만 캡처합니다. 결과적으로 출력은 다음과 같습니다.

["foo bar baz", " baz"]
로그인 후 복사

캡처된 모든 일치 항목을 검색하려면 다음 전략을 고려하십시오.

구분 기호로 분할:
가능한 경우, 복잡한 정규 표현식을 사용하는 대신 사전 정의된 구분 기호로 문자열을 분할합니다.

반복 그룹이 있는 Exec 루프:
반복 그룹을 캡처하는 패턴을 만든 다음 exec 루프를 사용하여 일치 항목을 반복합니다. 전체 그룹이 캡처되면 내부 구분 기호로 분할합니다.

다단계 매칭:
반복되는 그룹을 하나의 패턴으로 캡처한 후 다음을 사용하여 문제를 여러 단계로 세분화합니다. 개별 일치 항목을 추출하는 후속 패턴입니다.

예:

문자열을 일치시키고 분할하려면 다음 패턴을 사용합니다.

/<(\w+(;\w+)*)>/g
로그인 후 복사

이 패턴은 그룹 1의 전체 반복 그룹을 캡처합니다. 그런 다음 exec 루프에서 ; 구분 기호.

var text = "a;b;;g;h;i;;j;k;";

var r = /<(\w+(;\w+)*)>/g;

var match;
while ((match = r.exec(text)) != null) {
  console.log(match[1].split(";"));
}
로그인 후 복사

출력:

["c", "d", "e", "f"]
["xx", "yy", "zz"]
로그인 후 복사

위 내용은 JavaScript Regex에서 그룹의 여러 발생을 캡처하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿