J'essaie d'analyser les chaînes encodées par URL qui sont composées de paires clé = valeur séparées par &
ou &
.
Ce qui suit ne correspondra qu'à la première occurrence, en séparant les clés et les valeurs en éléments de résultat distincts:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/)
Les résultats pour la chaîne '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' seraient:
['1111342', 'Adam%20Franco']
L'utilisation de l'indicateur global, 'g', correspondra à toutes les occurrences, mais ne retournera que les sous-chaînes entièrement correspondantes, pas les clés et les valeurs séparées:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g)
Les résultats pour la chaîne '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' seraient:
['1111342=Adam%20Franco', '&348572=Bob%20Jones']
Bien que je puisse diviser la chaîne &
et séparer chaque paire clé / valeur individuellement, existe-t-il un moyen d'utiliser le support des expressions régulières de JavaScript pour faire correspondre plusieurs occurrences du modèle /(?:&|&)?([^=]+)=([^&]+)/
similaire à la preg_match_all()
fonction PHP ?
Je cherche un moyen d'obtenir des résultats avec les sous-matchs séparés comme:
[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
ou
[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]
replace
ici.var data = {}; mystring.replace(/(?:&|&)?([^=]+)=([^&]+)/g, function(a,b,c,d) { data[c] = d; });
terminé. "matchAll" en JavaScript est "replace" par une fonction de gestionnaire de remplacement au lieu d'une chaîne.