Ich habe versucht, dieses SpielWarum erzeugt String.match() keine erwarteten Ergebnisse, wenn ein globales Flag vorhanden ist?
'/links/51f5382e7b7993e335000015'.match(/^\/links\/([0-9a-f]{24})$/g)
und bekam:
['/links/51f5382e7b7993e335000015']
während ich erwartet hatte:
['/links/51f5382e7b7993e335000015', '51f5382e7b7993e335000015']
ich hatte kein Glück, bis ich die globale Flagge entfernt, was ich tat, nicht denken würde Auswirkungen auf meine Ergebnisse!
Mit der globalen Flagge entfernt,
'/links/51f5382e7b7993e335000015'.match(/^\/links\/([0-9a-f]{24})$/)
produziert:
[ '/links/51f5382e7b7993e335000015',
'51f5382e7b7993e335000015',
index: 0,
input: '/links/51f5382e7b7993e335000015' ]
was cool ist, aber die Dokumentation zu lesen ich kann nicht herausfinden:
- Warum der erste Formular hat nicht funktioniert
- Warum die globale Flagge mit dergestörtpassende
- Wie ohne die
index
undinput
Eigenschaften mein erwartetes Ergebnis erhalten
Auf JavaScript Regex and Submatches die Top-Antwort sagt:
Mit String der match() Funktion gibt nicht erfaßt Gruppen, wenn die Der globale Modifikator wird gesetzt, wie Sie herausgefunden haben. Jedoch
,
> 'fofoofooofoooo'.match(/f(o+)/g)
["fo", "foo", "fooo", "foooo"]
scheint gefangen Gruppen zu produzieren gut.
Vielen Dank.
Ich bearbeitet die Frage, um das mögliche doppelte Problem zu adressieren. –
Es ist ein Duplikat, aber +1 für "Ich habe es versucht ... ich habe ..., ich hatte erwartet ...". Ich wünschte, mehr Fragen wären so. – FakeRainBrigand
Hah! Danke ... Ich werde auf der verlinkten Seite noch genauer hinschauen. –