Antworten:
var re = new RegExp("/\b"+test+"\b/");
\bin einem String-Literal ist ein Rücktaste. Wenn Sie einen regulären Ausdruck in ein Zeichenfolgenliteral einfügen, benötigen Sie eine weitere Escape-Runde:
var re = new RegExp("\\b"+test+"\\b");
(Das brauchen Sie //in diesem Zusammenhang auch nicht.)
new RegExp('\b'+test+'\b');
When putting a regex in a string literal you need one more round of escaping; Gibt es Hintergrundinformationen dazu (die Gründe dafür)?
Mit ES2015 (auch bekannt als ES6) können Sie beim Erstellen von RegExp Vorlagenliterale verwenden :
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. Aus Gründen der Konsistenz mit anderen Objekten, bei denen dies möglicherweise nicht zutrifft, und der Klarheit im Allgemeinen würde ich jedoch immer verwendennew.