我正在编写一个路由器,它将解析url并重定向到代码中的必要组件,当我更改我的url并使用它传递对象id时,我想使用正则表达式解析它并路由它以获取该对象标识。
mysite.com/blah#path=folder/?folderId=klafjlka
如何使用javscript regex解析此URL并将其路由到该文件夹
关于骨干,我想编写一个执行此操作的代码,但我不使用骨干
routes : { "folder/:id" : "handler" },
答案 0 :(得分:1)
我倾向于发现在这些情况下使用.split通常会创建更易读的代码。
如果你使用window.location.hash来获取你的数据,那么你将会留下
#path=folder/?folderId=klafjlka
消除第一批不需要的东西。其余的可以通过拆分和循环拆分来完成。
//Remove the initial hash from the window.location.hash
var hash = window.location.hash.substr(1),
//Split it down so we have ["path=folder","folderId=klafjlka"]
paramSplit = hash.split("/?");
var params = {};
for (var x=0; x<paramSplit.length; x++){
//Split it at the equals
var split = paramSplit[x].split("=");
params[split[0]]=split[1];
}
console.log(params);
Params应该返回
{
path: "folder",
folderId: "klafjlka"
}
无论您的目的是什么,它都很容易使用。
答案 1 :(得分:0)
如果您的网址是字符串并且结构始终相同
var url = 'mysite.com/blah#path=folder/?folderId=klafjlka';
var re = /#path=(.+?)\?folderId=(.*)/i
var args = url.match(re);
var path = args[1];
var id = args[2];
此搜索#path=
并在?
之前捕获以下字符,然后搜索?folderId=
并捕获其他所有字符。
现在path
将包含folder/
,id
将包含klafjlka
。