Perché Javascript sub-partite smettere di funzionare quando il modificatore g
è impostato?JavaScript espressioni regolari e sub-match
var text = 'test test test test';
var result = text.match(/t(e)(s)t/);
// Result: ["test", "e", "s"]
Le opere di cui sopra bene, result[1]
è "e"
e result[2]
è "s"
.
var result = text.match(/t(e)(s)t/g);
// Result: ["test", "test", "test", "test"]
Quanto sopra ignora i miei gruppi di acquisizione. La seguente è l'unica soluzione valida?
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"]
*/
utilizzando exec non sembra ascoltare il modificatore di g, ma supporta sub-match/gruppi. Così il risultato sarebbe la prima partita (ignora sostanzialmente la g modificatore) –
Aggiunto un chiarimento al riguardo, si deve chiamare exec() più volte per ottenere i più corrispondenze. – hbw
Non la soluzione più elegante. Mi aspettavo un'uscita un po 'come questo: [ \t [ "test", "e", "s"], \t [ "test", "e", "s"], \t [" test "," e "," s "], \t [" test "," e "," s "] ] –