JavaScript 정규식에서 여러 그룹 캡처
JavaScript에서 정규식으로 작업할 때 여러 그룹을 캡처해야 하는 상황에 직면하는 것이 일반적입니다. 데이터 그룹. 그러나 경우에 따라 일치하는 모든 그룹을 캡처하는 예상 동작이 달성되지 않을 수 있습니다.
예를 들어 다음 JavaScript 코드를 고려해 보세요.
"foo bar baz".match(/^(\s*\w+)+$/)
코드가 반환될 것으로 예상할 수 있습니다. 캡처된 일치 항목을 모두 포함하는 배열:
["foo bar baz", "foo", " bar", " baz"]
그러나 실제 결과는 다음과 같습니다.
["foo bar baz", " baz"]
이는 정규 표현식에서 캡처 그룹을 반복할 때 마지막 캡처가 유지됩니다. 이는 대부분의 정규 표현식에서 기본 동작입니다.
모든 일치 항목 캡처에 대한 해결 방법
일치하는 그룹을 모두 캡처해야 하는 경우 몇 가지 옵션을 사용할 수 있습니다. :
Exec 루프를 사용하는 예
다음 예에서는 exec 루프를 사용하여 여러 그룹을 일치시키는 방법을 보여줍니다.
var text = "a;b;<c;d;e;f>;g;h;i;<no no no>;j;k;<xx;yy;zz>"; 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!