解析网址使用javascript正则表达式获取id

时间:2013-01-21 21:16:45

标签: javascript regex url backbone.js url-routing

我正在编写一个路由器,它将解析url并重定向到代码中的必要组件,当我更改我的url并使用它传递对象id时,我想使用正则表达式解析它并路由它以获取该对象标识。

mysite.com/blah#path=folder/?folderId=klafjlka

如何使用javscript regex解析此URL并将其路由到该文件夹​​

关于骨干,我想编写一个执行此操作的代码,但我不使用骨干

routes : { "folder/:id" : "handler" },

2 个答案:

答案 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