Jak stworzyć wzorzec wyrażenia regularnego, który jest konkatenowany ze zmienną, coś takiego:
var test ="52";
var re = new RegExp("/\b"+test+"\b/");
alert('51,52,53'.match(re));
Dzięki
Odpowiedzi:
var re = new RegExp("/\b"+test+"\b/");
\b
w literale łańcuchowym to znak cofania. Umieszczając wyrażenie regularne w literale ciągu, potrzebujesz jeszcze jednej rundy ucieczki:
var re = new RegExp("\\b"+test+"\\b");
(W //
tym kontekście również nie potrzebujesz ).
new RegExp('\b'+test+'\b');
When putting a regex in a string literal you need one more round of escaping
; czy są jakieś podstawowe informacje na ten temat (przyczyny)?
W ES2015 (aka ES6) możesz używać literałów szablonów podczas konstruowania 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
. Jednak dla spójności z innymi obiektami, w przypadku których może to nie być prawdą, i ogólnie dla przejrzystości, zawsze używałbymnew
.