Estoy tratando de analizar cadenas codificadas por URL que están formadas por pares clave = valor separados por uno &
o por otro &
.
Lo siguiente solo coincidirá con la primera aparición, separando las claves y los valores en elementos de resultados separados:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/)
Los resultados para la cadena '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' serían:
['1111342', 'Adam%20Franco']
El uso del indicador global, 'g', coincidirá con todas las ocurrencias, pero solo devolverá las subcadenas totalmente coincidentes, no las claves y valores separados:
var result = mystring.match(/(?:&|&)?([^=]+)=([^&]+)/g)
Los resultados para la cadena '1111342 = Adam% 20Franco & 348572 = Bob% 20Jones' serían:
['1111342=Adam%20Franco', '&348572=Bob%20Jones']
Si bien podría dividir la cadena &
y separar cada par clave / valor individualmente, ¿hay alguna forma de usar el soporte de expresión regular de JavaScript para que coincida con múltiples ocurrencias del patrón /(?:&|&)?([^=]+)=([^&]+)/
similar a la preg_match_all()
función de PHP ?
Estoy buscando una forma de obtener resultados con los sub-partidos separados como:
[['1111342', '348572'], ['Adam%20Franco', 'Bob%20Jones']]
o
[['1111342', 'Adam%20Franco'], ['348572', 'Bob%20Jones']]
replace
aquí.var data = {}; mystring.replace(/(?:&|&)?([^=]+)=([^&]+)/g, function(a,b,c,d) { data[c] = d; });
hecho. "matchAll" en JavaScript es "reemplazar" con una función de controlador de reemplazo en lugar de una cadena.