Comment utiliser une variable dans une expression régulière ?

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&#8217arrive 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&quot"`...alors comment puis-je passer cette variable dans ma chaîne regex ?

Solution

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");
Commentaires (16)

Ceci :

var txt=new RegExp(pattern,attributes);

est équivalent à ceci :

var txt=/pattern/attributes;

Voir .

Commentaires (1)
this.replace( new RegExp( replaceThis, 'g' ), withThis );
Commentaires (1)