Javascript正则表达式解析路径字符串

Javascript regular expression to parse path string

本文关键字:路径 字符串 正则表达式 Javascript      更新时间:2023-09-26

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

返回如下形式的字符串:

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

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

我认为你最好这样做,然后regex:

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

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

与其使用regex,不如简单地在"/"上分割字符串,并检查每段值中所需的数据。

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] : "";

然后按您的意愿处理您的数据。:)

如果有人仍然对这个问题感兴趣,我使用这个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"}