Rumah > Soal Jawab > teks badan
P粉1414555122023-08-24 10:47:54
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粉3189281592023-08-24 10:01:04
Anda boleh membina RegExp baharu:
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");