Comment utiliser une variable dans une regex en JavaScript?

Bonjour,
J’aimerais créer une méthode String.replaceFunc() en JavaScript et je pense que l’utilisation d’une regex serait la façon la plus rapide de le faire. Mais je ne sais pas comment passer une variable à une regex. Je peux déjà faire ceci qui remplacera toutes les instances de « X » par « Y ».

"YXYXYX".replace(/X/g, "Y");

Mais je veux faire quelque chose comme ça :

String.prototype.replaceFunc = function(remplacerCela, avecCeci) {
    this.replace(/remplacerCela/g, avecCeci);
};

Mais il est évident que cela ne remplacera que le texte « remplacerCela »… alors comment passer cette variable dans ma regex ?

Bonjour @florent,

Au lieu d’utiliser la syntaxe /regex\d/g, vous pouvez créer un nouvel objet RegExp :

var replace = "tonRegex\\d";
var re = new RegExp(replace,"g");

Vous pouvez créer dynamiquement des objets regex de cette manière. Dans ce cas, vous devez faire ceci :

"remplacerCela".replace(re, "avecCeci");

Note: Si vous devez utiliser une expression comme /\/word\:\w*$/, assurez-vous d’échapper les antislashs : new RegExp('\\/word\\:\\w*$').

Comme toujours : n’utilisez pas les expressions régulières à moins d’y être obligé. Pour un simple remplacement, voici ce qu’il faut faire :

'YXYXYX'.split('X').join('Y')

Vous n’avez donc pas à vous soucier des problèmes d’échapper les antislashs dans la réponse de @Michel.

Voici un exemple simple qui remplace le nom Alex par Bob en utilisant une variable:

let str1 = "Bonjour, je suis Alex, ou alexix, mais je préfère alex.";
let str2 = "Alex";
let re = new RegExp(`\\b${str2}\\b`, 'gi');
console.log(str1.replace(re, "Bob"));

Cela affiche:

Bonjour, je suis Bob, or alexix, mais je préfère Bob.