我正在使用我想要映射到对象的自定义URL路径。
我的映射如下所示:
browser://{A}/{B}/{C}/{D}/
{C}
和{D}
是可选的。所以路径可能如下所示:
"browser://call/register/ss/hello"
"browser://call/request/"
我希望路径可用作对象ala
elems = {
A: call,
B: register,
C: ss,
D: hello
}
但是现在我甚至无法让正则表达式工作......这就是我正在尝试的:
var re = /^browser:\/\/([\w\W]+)[\/+]([\w\W]+)[\/+]([\w\W]*)[\/*]([\w\W]*)[\/*]/;
console.log(re.exec("browser://call/register/ss/hello"));
如果我包含完整路径,这似乎只有效。但是当我离开{C}
或{D}
时,我的正则表达式失败了。
问题
如何选择{C}
和{D}
?有没有一种简单的方法将结果数组转换为对象?
感谢您的帮助!
答案 0 :(得分:1)
使用以下代码:
function toTokens(str){
var re = /^browser:\/\/([\w\W]+)[\/+]([\w\W]+)[\/+]/;
var tmp = re.exec(str);
var obj = tmp[1].split("/");
obj.push(tmp[2]);
return obj;
}
测试用例:
console.log(toTokens("browser://{A}/{B}/"));
console.log(toTokens("browser://{A}/{B}/{C}/"));
console.log(toTokens("browser://{A}/{B}/{C}/{D}/"));
答案 1 :(得分:1)