Saya ingin mencipta kaedah String.replaceAll() dalam JavaScript dan saya fikir menggunakan ungkapan biasa adalah cara yang paling bersih. Walau bagaimanapun, saya tidak tahu bagaimana untuk menghantar pembolehubah kepada ungkapan biasa. Saya sudah boleh melakukan ini, menggantikan semua contoh "B"
dengan "A"
.
"ABABAB".replace(/B/g, "A");
Tetapi saya mahu melakukan sesuatu seperti ini:
String.prototype.replaceAll = function(replaceThis, withThis) { this.replace(/replaceThis/g, withThis); };
Tetapi nampaknya ini hanya akan menggantikan teks "replaceThis"... Jadi bagaimanakah saya hendak menghantar pembolehubah ini ke dalam rentetan regex saya?
Seperti yang disebut oleh Eric Wendelin, anda boleh melakukan ini:
Ini akan menghasilkan
“正则表达式匹配。”
。但是,如果 str1 是"."
,则会失败。您期望结果为“模式匹配正则表达式”
,用“正则表达式”替换句点
, tetapi hasilnya akan menjadi...Ini kerana, walaupun
"."
ialah rentetan, dalam pembina RegExp ia masih ditafsirkan sebagai ungkapan biasa, mewakili sebarang aksara bukan baris baharu, mewakili setiap aksara dalam rentetan. Untuk tujuan ini, fungsi berikut mungkin berguna:Kemudian anda boleh melakukan ini:
menghasilkan
“模式匹配正则表达式”
.Anda boleh membinaRegExpbaharu:
Anda boleh mencipta objek ekspresi biasa secara dinamik dengan cara ini. Kemudian anda akan lakukan: