Cómo crear un patrón de expresiones regulares que se concatena con una variable, algo como esto:
var test ="52";
var re = new RegExp("/\b"+test+"\b/");
alert('51,52,53'.match(re));
Gracias
Respuestas:
var re = new RegExp("/\b"+test+"\b/");
\b
en un literal de cadena es un carácter de retroceso. Al poner una expresión regular en un literal de cadena, necesita una ronda más de escape:
var re = new RegExp("\\b"+test+"\\b");
(Tampoco es necesario //
en este contexto).
new RegExp('\b'+test+'\b');
When putting a regex in a string literal you need one more round of escaping
; ¿Existe alguna información de fondo sobre (las razones de) esto?
Con ES2015 (también conocido como ES6) puede utilizar literales de plantilla al construir RegExp :
let test = '53'
const regexp = new RegExp(`\\b${test}\\b`, 'gi') // showing how to pass optional flags
console.log('51, 52, 53, 54'.match(regexp))
new
. Sin embargo, por coherencia con otros objetos donde esto puede no ser cierto, y claridad en general, siempre usaríanew
.