我正在努力创建一个非常简单的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);
你能帮我吗?
祝你今天愉快,谢谢你的帮助。
答案 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);