Comme Eric Wendelin l'a mentionné, vous pouvez faire ceci :
str1 = "pattern" var re = new RegExp(str1, "g"); "pattern matching .".replace(re, "regex");
Cela produira “正則表達式匹配。”
。但是,如果 str1 是 "."
,則會失敗。您期望結果為“模式匹配正則表達式”
,用“正則表達式”替換句點
, mais le résultat sera...
regexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregex
En effet, bien que "."
soit une cha?ne, dans le constructeur RegExp, elle est toujours interprétée comme une expression régulière, représentant tout caractère autre qu'une nouvelle ligne, représentant chaque caractère de la cha?ne. A cet effet, les fonctions suivantes peuvent être utiles :
RegExp.quote = function(str) { return str.replace(/([.?*+^$[\]\(){}|-])/g, "\"); };
Ensuite, vous pouvez faire ceci?:
str1 = "." var re = new RegExp(RegExp.quote(str1), "g"); "pattern matching .".replace(re, "regex");
produit“模式匹配正則表達式”
.
Vous pouvez construire un nouvel objet RegExp?:
var replace = "regex\d"; var re = new RegExp(replace,"g");
Vous pouvez créer des objets d'expression régulière de manière dynamique de cette fa?on. Ensuite vous ferez :
"mystring1".replace(re, "newstring");