我试图用以下代码匹配并替换所有出现的模式,但它不起作用:
据我了解正则表达式,模式应该是 /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;
}
最佳答案
- 在创建显式
RegExp
对象时,不要包含/
和/
。仅在创建隐式语法时才使用该语法:var reg =/something/g;
g
开关作为第二个参数传递给RegExp
作为 字符串。- 此外,您不需要
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));
关于javascript正则表达式替换所有出现的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49243084/