Solución:
const regex = new RegExp(`ReGeX${testVar}ReGeX`);
...
string.replace(regex, "replacement");
Actualizar
Según algunos de los comentarios, es importante tener en cuenta que es posible que desee escapar del variable si existe la posibilidad de contenido malicioso (por ejemplo, la variable proviene de la entrada del usuario)
Actualización de ES6
En 2019, esto generalmente se escribiría usando una cadena de plantilla, y el código anterior se ha actualizado. La respuesta original fue:
var regex = new RegExp("ReGeX" + testVar + "ReGeX");
...
string.replace(regex, "replacement");
Puede utilizar el objeto RegExp:
var regexstring = "whatever";
var regexp = new RegExp(regexstring, "gi");
var str = "whateverTest";
var str2 = str.replace(regexp, "other");
document.write(str2);
Entonces puedes construir regexstring
de la forma que quieras.
Puedes leer más sobre esto aquí.
Para construir una expresión regular a partir de una variable en JavaScript, necesitará usar el RegExp
constructor con un parámetro de cadena.
function reg(input) {
var flags;
//could be any combination of 'g', 'i', and 'm'
flags="g";
return new RegExp('ReGeX' + input + 'ReGeX', flags);
}
por supuesto, este es un ejemplo muy ingenuo. Asume que input
se ha escapado correctamente para una expresión regular. Si está tratando con la entrada del usuario, o simplemente desea que sea más conveniente hacer coincidir caracteres especiales, deberá escapar de los caracteres especiales:
function regexEscape(str) {
return str.replace(/[-/\^$*+?.()|[]{}]/g, '\$&')
}
function reg(input) {
var flags;
//could be any combination of 'g', 'i', and 'm'
flags="g";
input = regexEscape(input);
return new RegExp('ReGeX' + input + 'ReGeX', flags);
}