Dlaczego pomniejszenie JavaScript przestaje działać po ustawieniu modyfikatora g
?Wyrażenia regularne JavaScript i podfoldery
var text = 'test test test test';
var result = text.match(/t(e)(s)t/);
// Result: ["test", "e", "s"]
Powyższe działa dobrze, result[1]
jest "e"
i result[2]
jest "s"
.
var result = text.match(/t(e)(s)t/g);
// Result: ["test", "test", "test", "test"]
Powyższe ignoruje moje grupy przechwytujące. Czy poniższe jedyne prawidłowe rozwiązanie?
var result = text.match(/test/g);
for (var i in result) {
console.log(result[i].match(/t(e)(s)t/));
}
/* Result:
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
*/
za pomocą exec wydaje się nie słuchać modyfikatora g, ale obsługuje podprzedziały/grupy. Tak więc wynik byłby pierwszym dopasowaniem (w zasadzie ignoruje modyfikator g). –
Dodano wyjaśnienie na ten temat - musisz wielokrotnie wywoływać exec(), aby uzyskać wiele dopasowań. – hbw
Nie jest to najbardziej eleganckie rozwiązanie. i oczekiwał wyjście nieco tak: [ \t [ "test", "e", "e"], \t [ "test", "e", "e"], \t [” test "," e "," s "], \t [" test "," e "," s "] ] –