Kha*_*meh 2 javascript regex string
我试图用对象中可比较的jSON属性替换字符串中的值.
var value = "/sessions/:sessionId/events/:id";
var result = replace(value, { sessionId : 1 , id : 23 });
// result : "/sessions/1/events/23"
console.log(result);
Run Code Online (Sandbox Code Playgroud)
是否可以使用JavaScript(我确定是)?不确定最有效的方法,以及当模板字符串中的所有值都不匹配时如何处理它.
提前致谢.
var url = function (template, parameters) {
var extra = [];
for (param in parameters) {
if (value.indexOf(param) < 0) {
extra.push(param + '=' + parameters[param]);
}
}
var result = template.replace(/:(\w+)/g, function (substring, match) {
var routeValue = parameters[match];
if (!routeValue) {
throw "missing route value for " + match + ' in "' + template +'"';
}
return routeValue;
});
if (result.indexOf("/:") > 0) {
throw "not all route values were matched";
}
return (extra.length === 0) ? result : result + "?" + extra.join("&");
};
var value = "/sessions/:sessionId/events/:id";
var data = {
sessionId: 1,
id: 23,
term: "butter"
};
// result : /sessions/1/events/21?term=butter
console.log(url(value, data));
Run Code Online (Sandbox Code Playgroud)
一个正则表达式在这里工作得很好.
var value = "/sessions/:sessionId/events/:id";
var obj = { sessionId : 1 , id : 23 };
var result = value.replace(/:(\w+)(\/|\b)/g, function(substring, match, nextMatch){
return obj[match] + nextMatch;
});
Run Code Online (Sandbox Code Playgroud)