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

标签 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;
}

最佳答案

  1. 在创建显式 RegExp 对象时,不要包含 //。仅在创建隐式语法时才使用该语法: var reg =/something/g;
  2. g 开关作为第二个参数传递给 RegExp 作为 字符串。
  3. 此外,您不需要 if 测试。只需进行替换,如果 模式已经存在,它将被替换。如果没有,就不会。
  4. for/in 循环用于循环对象,而不是Arrays,在这里,您首先不需要循环。只需找到 List[0] 并替换为 List[1]
  5. 最后,您用相同的模式替换了找到的模式。

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/

相关文章:

c# - 正则表达式解析 "^[\0\8]*$"- 无法识别的转义序列\8

c - 在 Linux 内核中使用正则表达式

c# - 将 Perl 正则表达式转换为 .NET

javascript - Firebase 数据库 javascript set() 不写

javascript - 如何以 Angular 显示每小时前的数据

.net - 在 VB.NET 中使用正则表达式从字符串中解析数字

python - 正则表达式替换两个不同字符串之前或之后的字符串

javascript - 需要帮忙。作者已放弃修复此 jQuery 插件!

javascript - HTML5 Canvas /闪光灯。如何访问 child 电影剪辑并使其转到AndPlay?

javascript - 循环总是返回数组的最后一个值