Javascript 用正则表达式替换URL中的参数
我想用特定id替换url字符串中的“:id”,例如54我的问题是,使用“/(:id)/I”替换此参数是否足够,还是应该使用更复杂的参数?谢谢Javascript 用正则表达式替换URL中的参数,javascript,regex,Javascript,Regex,我想用特定id替换url字符串中的“:id”,例如54我的问题是,使用“/(:id)/I”替换此参数是否足够,还是应该使用更复杂的参数?谢谢 var url=”http://www.test.com/api/person/:id/details" var str=url.replace(/(:id)/i,54)在“正常”情况下,它应该足够了。用户可以键入它:id或:id,但您已经使用了incasesensitive标志,因此应该可以 但你应该知道这是否足够。在您的应用程序中,可能存在这样一种情
var url=”http://www.test.com/api/person/:id/details"
var str=url.replace(/(:id)/i,54)代码>在“正常”情况下,它应该足够了。用户可以键入它:id
或:id
,但您已经使用了incasesensitive标志,因此应该可以
但你应该知道这是否足够。在您的应用程序中,可能存在这样一种情况:在要替换的id之前有一个:id
。如果您对上面给出的RegExp有问题。您提供的代码可以正常工作。此外,添加到代码中,此处不需要大括号(:id)
。此外,如果URL中的任何位置都有:id
(虽然不是预期的,但开发人员应注意),则正则表达式将失败。
修改的代码:
var url = "http://www.test.com/api/person/:id/details";
var str = url.replace(/\/:id\//i, '/54/');
我编写此函数是为了解决更新问题中提到的问题:
function replaceParametersInUrl(url, params) {
var newObj = {};
Object.keys(params).forEach(function(key) {
newObj[':'+key] = params[key];
});
var regex = new RegExp(Object.keys(newObj).join('|'), 'gi');
return url.replace(regex, function(matched) {
return newObj[matched];
});
}
console.log(replaceParametersInUrl("api/person/:userId/items/:itemId", {userId: 56, itemId: 1}));
我可以在对象键中使用“:”字符吗?您拥有的字符应该足够了。您也可以去掉括号,因为在这种情况下,您不需要括号提供的内容。因此,/:id/
就足够了。