Heim > Fragen und Antworten > Hauptteil
P粉1414555122023-08-24 10:47:54
正如 Eric Wendelin 提到的,你可以这样做:
str1 = "pattern" var re = new RegExp(str1, "g"); "pattern matching .".replace(re, "regex");
这会产生“正则表达式匹配。”
。但是,如果 str1 是 "."
,则会失败。您期望结果为“模式匹配正则表达式”
,用“正则表达式”替换句点
,但结果会是...
regexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregex
这是因为,虽然 "."
是一个字符串,但在 RegExp 构造函数中它仍然被解释为正则表达式,表示任何非换行符,表示字符串中的每个字符。为此,以下函数可能有用:
RegExp.quote = function(str) { return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); };
然后你可以这样做:
str1 = "." var re = new RegExp(RegExp.quote(str1), "g"); "pattern matching .".replace(re, "regex");
产生“模式匹配正则表达式”
。
P粉3189281592023-08-24 10:01:04
您可以构造一个新的 RegExp 对象:
var replace = "regex\\d"; var re = new RegExp(replace,"g");
您可以通过这种方式动态创建正则表达式对象。然后你会做:
"mystring1".replace(re, "newstring");