Antworten:
var re = new RegExp("/\b"+test+"\b/");
\b
in 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
.