Ich versuche, URL-codierte Zeichenfolgen zu analysieren, die aus Schlüssel / Wert-Paaren bestehen, die durch entweder &
oder getrennt sind &
.
Das Folgende stimmt nur mit dem ersten Vorkommen überein, 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']
Die Verwendung des globalen Flags 'g' stimmt mit allen Vorkommen überein, gibt jedoch nur die vollständig übereinstimmenden Teilzeichenfolgen zurück, 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']
Obwohl ich die Zeichenfolge aufteilen &
und jedes Schlüssel / Wert-Paar einzeln aufteilen könnte , gibt es eine Möglichkeit, die Unterstützung für reguläre Ausdrücke von JavaScript zu verwenden, um mehrere Vorkommen des Musters /(?:&|&)?([^=]+)=([^&]+)/
abzugleichen, die der PHP- preg_match_all()
Funktion ähneln ?
Ich strebe nach einer Möglichkeit, Ergebnisse zu erzielen, wenn die Teilspiele wie folgt getrennt sind:
[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
oder
[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]
replace
hier empfohlen hat.var data = {}; mystring.replace(/(?:&|&)?([^=]+)=([^&]+)/g, function(a,b,c,d) { data[c] = d; });
getan. "matchAll" in JavaScript ist "Ersetzen" durch eine Ersetzungshandlerfunktion anstelle einer Zeichenfolge.