我正在尝试使用以下代码匹配并替换所有出现的模式,但它无法正常工作:
据我所知,正则表达式应为/string/g
var text = "ldkfglkfdj {example} fdgfdgfdg {example}";
var List = ["{example}", "string"];
function replace(text) {
for (var key in List) {
if (text.includes(key)){
var regexp = new RegExp("/"+key+"/g");
text = text.replace(regexp, List[key]);
}
}
return text;
}
答案 0 :(得分:2)
/
对象时,您不会包含/
和RegExp
。您只在使用隐式语法时使用该语法:var reg = /something/g;
g
开关作为第二个参数传递给RegExp
作为a
字符串。if
测试。只是做替换,如果
模式在那里,它将被替换。如果没有,它就不会。for/in
循环用于循环对象,而不是Arrays
,在这里,您首先不需要循环。只需找到List[0]
并替换为List[1]
。
var text = "ldkfglkfdj {findThis} fdgfdgfdg {findThis}";
var List = ["{findThis}", "replaced!"];
function replace(text) {
var regexp = new RegExp(List[0], "g");
return text.replace(regexp, List[1]);
}
console.log(replace(text));
答案 1 :(得分:0)
您不一定需要为此使用正则表达式。只需拆分搜索文本并加入替换文本,如下面的代码段所示:
var text = "ldkfglkfdj {example} fdgfdgfdg {example}";
var List = ["{example}", "string"];
console.log(text.split(List[0]).join(List[1]))

答案 2 :(得分:0)
使用此替代方法,假设您的数组具有替换的键值。
var str = "ldkfglkfdj {example} fdgfdgfdg {example}";
function replace(text) {
var [regex, string] = ["\{example\}", "Ele"];
var regexp = new RegExp(regex, "g");
text = text.replace(regexp, string);
return text;
}
console.log(replace(str))

答案 3 :(得分:0)
正则表达式与模式一起使用。如果只想替换所有出现而不将字符串解释为模式,则可以使用以下函数:
String.prototype.replaceAll = function (searchValue, replaceValue) {
var str = this;
return str.split(searchValue).join(replaceValue);
};
你可以在你的代码中调用它:
String.prototype.replaceAll = function(searchValue, replaceValue) {
var str = this;
return str.split(searchValue).join(replaceValue);
};
var text = "ldkfglkfdj {example} fdgfdgfdg {example}";
var List = ["{example}", "string"];
text = text.replaceAll(List[0], List[1]);
console.log(text);