Comment créer un motif regex qui est concaténé avec une variable, quelque chose comme ceci:
var test ="52";
var re = new RegExp("/\b"+test+"\b/");
alert('51,52,53'.match(re));
Merci
Réponses:
var re = new RegExp("/\b"+test+"\b/");
\bdans une chaîne littérale est un caractère de retour arrière. Lorsque vous placez une expression régulière dans une chaîne littérale, vous avez besoin d'un autre cycle d'échappement:
var re = new RegExp("\\b"+test+"\\b");
(Vous n'avez pas non plus besoin du //dans ce contexte.)
new RegExp('\b'+test+'\b');
When putting a regex in a string literal you need one more round of escaping; y a-t-il des informations générales sur (les raisons de) cela?
Avec ES2015 (aka ES6), vous pouvez utiliser des littéraux de modèle lors de la construction de 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. Cependant, pour la cohérence avec d'autres objets où cela peut ne pas être vrai, et pour la clarté en général, j'utiliserais toujoursnew.