"http://test.com/1/2"에 "1"과 "2"를 캡처하고 싶습니다. 여기 내 정규식 /(?:\/([0-9]+))/g
입니다. 문제는 단지 ["/1", "/2"]
입니다. http://regex101.com/r/uC2bW5에 따르면 나는 "1"과 "1"을 얻어야합니다.캡쳐 그룹에서 RegExp 캡쳐 그룹
JS에서 RegExp를 실행하고 있습니다.
"http://test.com/1/2"에 "1"과 "2"를 캡처하고 싶습니다. 여기 내 정규식 /(?:\/([0-9]+))/g
입니다. 문제는 단지 ["/1", "/2"]
입니다. http://regex101.com/r/uC2bW5에 따르면 나는 "1"과 "1"을 얻어야합니다.캡쳐 그룹에서 RegExp 캡쳐 그룹
JS에서 RegExp를 실행하고 있습니다.
자바 스크립트에서 "일치"는 항상 WHOLE 패턴 일치를 포함하는 0
색인의 요소를 포함합니다. 따라서 귀하의 경우,이 색인 0은 두 번째 경기의 경우 /1
및 /2
입니다.
처음으로 Matchgroup (/
을 포함하지 않음)을 얻으려면 인덱스가 1
인 Match-Array 항목 안에 있습니다.
이 인덱스 0
을 제거하고 ?:
은 자바 스크립트가 괄호의 추가 세트로 전체 정규 표현식을 wrapps 상상을 사용하여 당신이 non-matching
로 정의 외부 매칭 그룹과 아무 상관이 될 수 없다.
e.e. 당신은 몇 가지 옵션이
[0 => Hello World, 1 => o]
:에있는 문자열 Hello World
과 정규식 /Hell(o) World/
가 발생합니다
가 사용을 while
루프 RegExp.prototype.exec
이상 : 같은
var regex = /(?:\/([0-9]+))/g,
string = "http://test.com/1/2",
matches = [];
while (match = regex.exec(string)) {
matches.push(match[1]);
}
사용 replace
elclanrs에 의해 제안 :
var regex = /(?:\/([0-9]+))/g,
string = "http://test.com/1/2",
matches = [];
string.replace(regex, function() {
matches.push(arguments[1]);
});
일치하는 그룹 전체를 반환 할 것이라고 생각했습니다. while 루프를 사용하여 아웃. – bozhidarc
그래서 JS에서 어떻게 사용하고 있습니까? 나는 당신이'match'를 잘못 사용하고있는 것으로 의심합니다 ... – elclanrs
여기, 이것을 사용하십시오 https://gist.github.com/elclanrs/5506663 – elclanrs
큰 기능 @elclanrs – Sam