Bagaimana untuk menggunakan pembolehubah dalam ungkapan biasa?
P粉763748806
P粉763748806 2023-08-23 15:12:16
0
2
526

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?

P粉763748806
P粉763748806

membalas semua (2)
P粉141455512

Seperti yang disebut oleh Eric Wendelin, anda boleh melakukan ini:

str1 = "pattern" var re = new RegExp(str1, "g"); "pattern matching .".replace(re, "regex");

Ini akan menghasilkan“正则表达式匹配。”。但是,如果 str1 是".",则会失败。您期望结果为“模式匹配正则表达式”,用“正则表达式”替换句点, tetapi hasilnya akan menjadi...

regexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregex

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:

RegExp.quote = function(str) { return str.replace(/([.?*+^$[\]\(){}|-])/g, "\"); };

Kemudian anda boleh melakukan ini:

str1 = "." var re = new RegExp(RegExp.quote(str1), "g"); "pattern matching .".replace(re, "regex");

menghasilkan“模式匹配正则表达式”.

    P粉318928159

    Anda boleh membinaRegExpbaharu:

    var replace = "regex\d"; var re = new RegExp(replace,"g");

    Anda boleh mencipta objek ekspresi biasa secara dinamik dengan cara ini. Kemudian anda akan lakukan:

    "mystring1".replace(re, "newstring");
      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!