JS替换多个短语

时间:2017-12-13 07:48:00

标签: javascript regex string loops replace

我需要将所有%25替换为 puidInp 中的%,但仅限于 newPuidsValues 中提到的字词。 我试图用循环来解决它,但它一次只改变一个单词:



var newPuidsValues = ["banner.tracking_url", "banner.userN", "banner.alt"];
var puidInp = "tyhtyh%25banner.tracking_url%25tyhtyh%25banner.userN%25tyhtyh%25banner.userN%25tyhtyh%25banner.alt%25tyhtyh";

for (var h = 0; h < newPuidsValues.length; h++) {
    const reg = new RegExp("\\D{1}\\d{2}" + newPuidsValues[h] + "\\D{1}\\d{2}", "g");
    console.log(reg);
    var puidOut = puidInp.replace(reg, "%" + newPuidsValues[h] + "%");
    console.log(puidOut);
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

对代码进行一些小改动:

  • 在for-loop
  • 之外声明puidOut
  • puidOut的初始值设置为puidInp
  • 在for循环中,在您创建的RegExp中使用%25以仅捕获所需的值
  • 在for循环中,在每次迭代中更新puidOut
  • 完成后打印

var newPuidsValues = ["banner.tracking_url", "banner.userN", "banner.alt"];

var puidInp = "tyhtyh%25banner.tracking_url%25tyhtyh%25banner.userN%25tyhtyh%25banner.userN%25tyhtyh%25banner.alt%25tyhtyh";

var puidOut = puidInp;

for (var h = 0; h < newPuidsValues.length; h++) {
    const reg = new RegExp("%25" + newPuidsValues[h] + "%25", "g");
    console.log(reg);
    puidOut = puidOut.replace(reg, "%" + newPuidsValues[h] + "%");
}

console.log(puidOut);