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

Javascript 简单的JS正则表达式替换。,javascript,regex,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

我正在努力创建一个非常简单的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个匹配器,因此在回调函数中还可以获得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);

如果您只需要匹配数字,它应该可以完成这项工作

var finalUrl=“/users/1234/contracts/5678”;
finalUrl.match(/\d+/g).forEach(函数(v,i){
finalUrl=finalUrl.replace(v,“{variable”+(i+1)+”}”);
});

文件编写(最终)数字不需要
i
标志。从未听说过
(upp | low)erCase
数字:带柜台的猫。您不需要
i
标志,因为
\w
同时匹配大小写字母谢谢Jens。这正是我想要的:)@Tushar的确,只是从他的问题中抄来的。也许他简化了他的问题,并使用了更复杂的模式,但对于这一个,你完全正确,很好的提示。