Como criar um padrão regex que é concatenado com a variável, algo assim:
var test ="52";
var re = new RegExp("/\b"+test+"\b/");
alert('51,52,53'.match(re));
obrigado
Respostas:
var re = new RegExp("/\b"+test+"\b/");
\bem uma string literal é um caractere de retrocesso. Ao colocar uma regex em um literal de string, você precisa de mais uma rodada de escape:
var re = new RegExp("\\b"+test+"\\b");
(Você também não precisa do //neste contexto.)
new RegExp('\b'+test+'\b');
When putting a regex in a string literal you need one more round of escaping; há alguma informação de fundo sobre (as razões) isso?
Com ES2015 (também conhecido como ES6), você pode usar literais de modelo ao 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. No entanto, para consistência com outros objetos onde isso pode não ser verdade, e clareza em geral, eu sempre usarianew.