0

URLを解析し、コード内の必要なコンポーネントにリダイレクトするルーターを作成しています。URLを変更してオブジェクトIDを渡す場合は、正規表現を使用して解析し、ルーティングしてそのオブジェクトをIDで取得します。

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

javscript正規表現を使用してこのURLを解析し、そのフォルダーにルーティングするにはどうすればよいですか?

バックボーンに関して、これを行うコードを書きたいのですが、バックボーンを使用していません

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

2 に答える 2

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

パラメータは戻る必要があります

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

これは、目的が何であれ、簡単に使用できます。

于 2013-01-21T21:27:04.373 に答える
0

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

于 2013-01-21T21:25:57.690 に答える