简单的JS正则表达式替换。

时间:2016-01-09 23:56:13

标签: javascript regex

我正在努力创建一个非常简单的RegExp。 (可能没有几个小时的睡眠时间。)

我只输入了这个字符串:/ users / 10 / contracts / 1 我的正则表达式是这样的:/ users /(\ w +)/ contracts /(\ w +)/

我想用这种字符串替换所有匹配项:/ users / {variable1} / contracts / {variable2}

这是我的完整源代码:

var customRegex = "/users/(\\w+)/contracts/(\\w+)";
  var i =0;
  var finalUrl = "/users/1234/contracts/5678".replace(new RegExp(customRegex, 'gi'), function myFunction(x, y){
    return "{variable" + i + "}"; 
  });

  console.log(finalUrl);

你能帮我吗?

祝你今天愉快,谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

替换功能仅在整个替换时调用一次。 您正在使用2个匹配器,因此您还可以在回调函数中获得2个匹配作为参数。

var customRegex = "/users/(\\w+)/contracts/(\\w+)";
var finalUrl = "/users/1234/contracts/5678".replace(new RegExp(customRegex, 'gi'), function myFunction(wholeString, p1, p2){
    return wholeString.replace(p1, "{variable1}").replace(p2, "{variable2}"); 
});
console.log(finalUrl);

答案 1 :(得分:0)

如果您只需要匹配数字,它应该完成工作。

var finalUrl = "/users/1234/contracts/5678";

finalUrl.match(/\d+/g).forEach(function(v, i) { 
  finalUrl = finalUrl.replace(v, "{variable" + (i + 1) + "}"); 
});

document.write(finalUrl);