Cara membuat pola regex yang digabungkan dengan variabel, kira-kira seperti ini:
var test ="52";
var re = new RegExp("/\b"+test+"\b/");
alert('51,52,53'.match(re));
Terima kasih
Jawaban:
var re = new RegExp("/\b"+test+"\b/");
\bdalam string literal adalah karakter spasi mundur. Saat meletakkan regex dalam string literal, Anda membutuhkan satu putaran lagi untuk keluar:
var re = new RegExp("\\b"+test+"\\b");
(Anda juga tidak membutuhkan //dalam konteks ini.)
new RegExp('\b'+test+'\b');
When putting a regex in a string literal you need one more round of escaping; apakah ada informasi latar belakang tentang (alasan) ini?
Dengan ES2015 (alias ES6) Anda dapat menggunakan literal template saat membuat 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. Namun, untuk konsistensi dengan objek lain di mana hal ini mungkin tidak berlaku, dan kejelasan secara umum, saya akan selalu menggunakannew.