【问题标题】:parse url to get id using javascript regex使用 javascript 正则表达式解析 url 以获取 id
【发布时间】:2013-01-05 00:31:58
【问题描述】:

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

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

如何使用 javscript 正则表达式解析此 url 并将其路由到该文件夹​​

关于主干,我想编写一个代码来执行此操作,但我没有使用主干

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

【问题讨论】:

  • 到目前为止,我已经能够路由静态 url,例如 /albumList,但我真的不知道如何为传递参数的动态 url 编写条件

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


【解决方案1】:

我倾向于发现在这些情况下使用 .split 通常会创建更具可读性的代码。

如果您最初使用 window.location.hash 来获取数据,那么您将得到 ​​p>

#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);

参数应该返回

{
  path: "folder",
  folderId: "klafjlka"
}

无论您的目的是什么,它都易于使用。

【讨论】:

    【解决方案2】:

    如果你的 url 在一个字符串中并且总是具有相同的结构

    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

    【讨论】:

      猜你喜欢
      • 2012-08-23
      • 2014-02-14
      • 2011-03-20
      • 2014-02-05
      • 2020-09-12
      • 1970-01-01
      • 2012-11-30
      相关资源
      最近更新 更多