javascript正则表达式替换所有出现

时间:2018-03-12 19:27:30

标签: javascript regex

我正在尝试使用以下代码匹配并替换所有出现的模式,但它无法正常工作: 据我所知,正则表达式应为/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;
}

4 个答案:

答案 0 :(得分:2)

  1. 制作明确的/对象时,您不会包含/RegExp。您只在使用隐式语法时使用该语法:var reg = /something/g;
  2. g开关作为第二个参数传递给RegExp作为a 字符串。
  3. 此外,您不需要if测试。只是做替换,如果 模式在那里,它将被替换。如果没有,它就不会。
  4. for/in循环用于循环对象,而不是Arrays,在这里,您首先不需要循环。只需找到List[0]并替换为List[1]
  5. 最后,您使用相同的模式替换找到的模式。
  6. 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);