Me gustaría crear un método String.replaceAll()
en JavaScript y estoy pensando que el uso de un regex sería la forma más tersa de hacerlo. Sin embargo, no puedo averiguar cómo pasar una variable a un regex. Ya puedo hacer esto que reemplazará todas las instancias de "B"con
"A"`.
"ABABAB".replace(/B/g, "A");
Pero quiero hacer algo como esto:
String.prototype.replaceAll = function(replaceThis, withThis) {
this.replace(/replaceThis/g, withThis);
};
Pero obviamente esto sólo reemplazará el texto "replaceThis"
... así que ¿cómo puedo pasar esta variable en mi cadena regex?
En lugar de utilizar la sintaxis /regex/g
, puede construir un nuevo objeto RegExp:
var replace = "regex";
var re = new RegExp(replace,"g");
Puedes crear dinámicamente objetos regex de esta manera. Así lo harás:
"mystring".replace(re, "newstring");
Esto:
var txt=new RegExp(pattern,attributes);
equivale a esto:
var txt=/pattern/attributes;
this.replace( new RegExp( replaceThis, 'g' ), withThis );