3

我有一个向用户显示照片和相册的应用程序。根据应用程序的当前状态,我显示适当的视图。每次视图更改时,我都会更改 url,然后控制器使用 window.location.hash 获取 url 值

它返回这种形式的字符串:

"photos/byalbum/albumid"
"photos/allphotos"
"photos/eachphoto/albumid/photoid"

我的问题是如何使用 javscript 正则表达式解析它以确定我应该显示哪个视图并获取参数(albumId/photoId)

4

3 回答 3

6

我认为你最好这样做,然后是正则表达式:

"photos/eachphoto/albumid/photoid".split("/")

然后你得到你可以检查的数组。

于 2013-03-07T21:19:11.957 回答
1

而不是使用正则表达式,您可能应该简单地将字符串拆分为“/”并检查您需要的数据的每个值。

var urlString = <your returned value here>;
var urlPieces = urlString.split("/");

var view = urlPieces[1];
var album = (urlPieces[2]) ? urlPieces[2] : "";
var photo = (urlPieces[3]) ? urlPieces[3] : "";

然后根据需要使用您的数据。:)

于 2013-03-07T21:21:49.823 回答
1

如果有人对这个问题仍然感兴趣,我使用这个 lib: path-to-regexp来解决这个问题。

基本上,您可以使用模式将 url 转换为变量。例如:

const pattern = 'photos/eachphoto/:albumid/:photoid'
const path = 'photos/eachphoto/10/23'
const converter = pathToRegex.match(pattern, { decode: decodeURIComponent }) 
const params = converter(path)?.params || {}

和参数将类似于:{ albumid: "10", photoid: "23" }

于 2021-10-12T15:58:56.370 回答