Je voudrais créer une méthode String.replaceAll()
en JavaScript et je pense que l'utilisation d'une expression rationnelle serait le moyen le plus simple de le faire. Cependant, je n’arrive pas à trouver comment passer une variable à une regex. Je peux déjà faire ceci qui remplacera toutes les instances de " "B"" par " "A"
".
"ABABAB".replace(/B/g, "A");
Mais je veux faire quelque chose comme ceci :
String.prototype.replaceAll = function(replaceThis, withThis) {
this.replace(/replaceThis/g, withThis);
};
Mais il est évident que cela ne remplacera que le texte "replaceThis""`...alors comment puis-je passer cette variable dans ma chaîne regex ?
Au lieu d'utiliser la syntaxe /regex/g
, vous pouvez construire un nouvel objet RegExp :
var replace = "regex";
var re = new RegExp(replace,"g");
Vous pouvez créer dynamiquement des objets regex de cette façon. Vous ferez alors :
"mystring".replace(re, "newstring");
Ceci :
var txt=new RegExp(pattern,attributes);
est équivalent à ceci :
var txt=/pattern/attributes;
this.replace( new RegExp( replaceThis, 'g' ), withThis );