Tengo una URL y quiero reemplazar la cadena de consulta. Por ejemplo
www.test.com/is/images/383773?wid=200&hei=200
Quiero hacer coincidir wid= y hei= y los números no tienen que ser 200 para reemplazar todo, por lo que debería verse así.
Esperado www.test.com/is/images/383773?@HT_dtImage
Así que intenté hacerlo, pero solo reemplazó el wei y el hei correspondientes.
const url = "www.test.com/is/images/383773?wid=200&hei=200" url.replace(/(wid)(hei)_[^\&]+/, "@HT_dtImage")Simplemente usaría la división de cadenas aquí:
var url = "www.test.com/is/images/383773?wid=200&hei=200"; var output = url.split("?")[0] + "?@HT_dtImage"; console.log(output); Si solo desea orientar las cadenas de consulta con las claves wid y hei , utilice un enfoque de expresiones regulares:
var url = "www.test.com/is/images/383773?wid=200&hei=200"; var output = url.replace(/(.*)\?(?=.*\bwid=\d+)(?=.*\bhei=\d+).*/, "$1?@HT_dtImage"); console.log(output);Puede hacer coincidir wid= o hei= hasta el siguiente ampersand opcional y luego eliminar esas coincidencias y luego agregar @HT_dtImage al resultado.
\b(?:wid|hei)=[^&]*&?El patrón coincide:
\b Un límite de palabras para evitar una coincidencia parcial de palabras(?:wid|hei)= Grupo sin captura, haga coincidir wid o hei seguido de =[^&]*&? Haga coincidir 0+ veces un carácter que no sea & , y luego haga coincidir un & opcionalVea una demostración de expresiones regulares .
let url = "www.test.com/is/images/383773?wid=200&hei=200" url = url.replace(/\b(?:wid|hei)=[^&]*&?/g, "") + "@HT_dtImage"; console.log(url)Puede hacer uso de lookaround usando regex /\?.*/
const url = 'www.test.com/is/images/383773?wid=200&hei=200'; const result = url.replace(/\?.*/, '?@HT_dtImage'); console.log(result);