Ich versuche, url-codierte Zeichenfolgen zu analysieren, die aus Schlüssel=Wert-Paaren bestehen, die entweder durch &
o &
.
Im Folgenden wird nur das erste Vorkommen abgeglichen, wobei die Schlüssel und Werte in separate Ergebniselemente aufgeteilt werden:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/)
Die Ergebnisse für die Zeichenfolge '1111342=Adam%20Franco&348572=Bob%20Jones' wären:
['1111342', 'Adam%20Franco']
Mit dem globalen Flag 'g' werden alle Vorkommen abgeglichen, aber nur die vollständig übereinstimmenden Teilstrings zurückgegeben, nicht die getrennten Schlüssel und Werte:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g)
Die Ergebnisse für die Zeichenfolge '1111342=Adam%20Franco&348572=Bob%20Jones' wären:
['1111342=Adam%20Franco', '&348572=Bob%20Jones']
Während ich die Zeichenkette aufteilen könnte &
und jedes Schlüssel/Wert-Paar einzeln aufschlüsseln, gibt es eine Möglichkeit, mit der JavaScript-Unterstützung für reguläre Ausdrücke auf mehrere Vorkommen des Musters /(?:&|&)?([^=]+)=([^&]+)/
ähnlich wie PHPs preg_match_all()
Funktion?
Ich suche nach einer Möglichkeit, Ergebnisse zu erhalten, bei denen die Unterübereinstimmungen getrennt sind:
[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
o
[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]
9 Stimmen
Es ist ein wenig seltsam, dass niemand die Verwendung von
replace
hier.var data = {}; mystring.replace(/(?:&|&)?([^=]+)=([^&]+)/g, function(a,b,c,d) { data[c] = d; });
erledigt. "matchAll" in JavaScript ist "replace" mit einer Ersetzungsfunktion anstelle einer Zeichenkette.0 Stimmen
Für diejenigen, die diese Frage im Jahr 2020 immer noch nicht beantworten können, lautet die Antwort: "Don't use regex, use URLSearchParams die all dies für Sie erledigt."