我正在编写一个路由器,它将解析 url 并重定向到代码中的必要组件,当我更改我的 url 并使用它传递对象 id 时,我想使用正则表达式解析它并路由它以通过 id 获取该对象。
mysite.com/blah#path=folder/?folderId=klafjlka
如何使用 javscript 正则表达式解析此 url 并将其路由到该文件夹
关于主干,我想编写一个代码来执行此操作,但我没有使用主干
routes : { "folder/:id" : "handler" },
我正在编写一个路由器,它将解析 url 并重定向到代码中的必要组件,当我更改我的 url 并使用它传递对象 id 时,我想使用正则表达式解析它并路由它以通过 id 获取该对象。
mysite.com/blah#path=folder/?folderId=klafjlka
如何使用 javscript 正则表达式解析此 url 并将其路由到该文件夹
关于主干,我想编写一个代码来执行此操作,但我没有使用主干
routes : { "folder/:id" : "handler" },
我倾向于发现在这些情况下使用 .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);
参数应该返回
{
path: "folder",
folderId: "klafjlka"
}
无论您的目的是什么,它都很容易使用。
如果您的 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
。