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/");
\b
dalam 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
.