0
votes

Remplacez toute la valeur de paramètre de requête correspondante dans l'URL en Javascript

J'ai le chemin / URL ci-dessous

test = "/test/test-products/?pId=9401100&imgId=14607518&catID=5449&modelId=pros&cm_sp=XIT_resp-_-PR-_-14607518_9401100&lid=xit-test-14607518-9401100";

newPath = test.replace('14607518', '12345678');

Je ne mets pas à jour toutes les occurrences de la chaîne correspondante bien qu'elle ait un hypen, un soulignement (-_-)

Comment puis-je remplacer toutes les occurrences de 14607518 par regex?


0 commentaires

3 Réponses :


1
votes

La syntaxe est un peu différente puisque vous utilisez l'expression régulière ici.

test.replace('14607518', '12345678');

Au lieu de

test.replace(/14607518/g, '12345678');

Où le 'g' à la fin signifie «global», ou remplace toutes les occurrences.


0 commentaires

1
votes

Lorsque vous passez une chaîne au lieu d'un objet regex pour le remplacer, il ne remplace que la première occurrence, vous devez utiliser une balise g et un modèle d'expression régulière pour remplacer toutes les instances

p >

const test = "/test/test-products/?pId=9401100&imgId=14607518&catID=5449&modelId=pros&cm_sp=XIT_resp-_-PR-_-14607518_9401100&lid=xit-test-14607518-9401100";

const newPath = test.replace(/14607518/g, '12345678');

console.log(newPath)


0 commentaires

0
votes

Vous devez utiliser:

const regex = /([^\d])(14607518)([^\d])/gm;
const str = `/test/test-products/?pId=9401100&imgId=146075189&catID=5449&modelId=pros&cm_sp=XIT_resp-_-PR-_-14607518_9401100&lid=xit-test-14607518-9401100`;
const subst = `$112345678$3`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

car cela vous aidera à éviter de cibler accidentellement des numéros tels que 146075189

([^\d])(14607518)([^\d])

Voir https://regex101.com/r/0pJWwo/1 p >


0 commentaires