Une expression régulière particulière me fait l'erreur aujourd'hui. Je veux simplement remplacer la gamme = 100 dans une chaîne comme
var string = '...commonstringblabla<b>&range=100&</b>stringandsoon...';
avec
...commonstringblabla<b>&range=400&</b>stringandsoon...
J'ai réussi à égaler la "gamme = 100" avec
Alerte (string.match (/ range = 100 /));
- Comment limiter le nombre d'itérations effectuées par setInterval
- Javascript, Firefox: comment désactiver les contrôles de cellule spécifiques au navigateur?
- Cacher dynamiquement les lignes de table avec jQuery
- «Importation de jeton inattendue» dans «webpack.config.babel.js» lors de l'utilisation de `{modules: false}`
- Validation de date HTML5
Mais lorsque j'essaie de le remplacer,
String.replace (/ range = 100 /, 'range = 400');
Rien ne se passe. La chaîne possède toujours la plage = 100. Comment puis-je le faire fonctionner?
Parce que replace
ne modifie pas la chaîne sur laquelle elle est appliquée, mais renvoie une nouvelle chaîne.
string = string.replace(/range=100/, 'range=400');
String.replace n'est pas destructeur, c'est-à-dire qu'il ne change pas l'instance sur laquelle il est appelé.
Pour ce faire, utilisez
string = string.replace("range=100","range=400");
Je ferais ceci:
string.replace(/([?&])range=100(?=&|$)/, '$1range=400')
Cela ne remplacera que la range=100
s'il s'agit d'un argument URI (donc il est délimité à la gauche par ?
ou &
et "à droite" par &
ou la fin de la chaîne).
Je ferais de cette façon
string = string.replace(/\brange=100(?!\d)/, 'range=400');
Écrivez uniquement string.replace("range=100","range=400");
.