如何获取路由路径以匹配同一正则表达式中的必需字符和可选字符?
How to get route path to match on mandatory and optional characters in same regex?
我正在努力寻找匹配必填字符和可选字符的路由路径。
我的路线是这样的:
expressRouter.get(['/post/:PostID([0-9]+)(-*)?'], async function (req, res) {
let Result;
const PostID = req.params.PostID;
try {
Result = await api.getPost(PostID);
} catch (error) {
if (error.code === 404) {
return res.status(404).send("404 | Page Not Found")
}
return res.status(500).send(error);
return res.status(500).send("500 | Internal Server Error");
}
res.status(200).json(Result);
});
我正在尝试匹配这样的路线:
/1079-my-favourite-sports
/1080
/1081-new-car
唯一的强制性部分是 ([0-9]+)
,它给了我 PostID
。它的其余部分即 (-.*)
是一个连字符后跟任何字符是可选的,但它是需要存在的 URL slug 的一部分。
如何编写我的路径正则表达式,以便它匹配上面的所有路由?尝试使用 Express Route Tester 但除了匹配第一部分 ([0-9]+)
之外别无他法
对于 Express Rout 1.7.0 及更高版本,使用它来获取 PostID 密钥和可选的 Slug 密钥:
/:PostID(\d+):Slug(-.*)?
旧版本(Express 4.x)很古怪,其中 .*
被解释为 \.(.*)
。试试这个:
/:PostID(\d+):Slug(-*)?
我正在努力寻找匹配必填字符和可选字符的路由路径。
我的路线是这样的:
expressRouter.get(['/post/:PostID([0-9]+)(-*)?'], async function (req, res) {
let Result;
const PostID = req.params.PostID;
try {
Result = await api.getPost(PostID);
} catch (error) {
if (error.code === 404) {
return res.status(404).send("404 | Page Not Found")
}
return res.status(500).send(error);
return res.status(500).send("500 | Internal Server Error");
}
res.status(200).json(Result);
});
我正在尝试匹配这样的路线:
/1079-my-favourite-sports
/1080
/1081-new-car
唯一的强制性部分是 ([0-9]+)
,它给了我 PostID
。它的其余部分即 (-.*)
是一个连字符后跟任何字符是可选的,但它是需要存在的 URL slug 的一部分。
如何编写我的路径正则表达式,以便它匹配上面的所有路由?尝试使用 Express Route Tester 但除了匹配第一部分 ([0-9]+)
对于 Express Rout 1.7.0 及更高版本,使用它来获取 PostID 密钥和可选的 Slug 密钥:
/:PostID(\d+):Slug(-.*)?
旧版本(Express 4.x)很古怪,其中 .*
被解释为 \.(.*)
。试试这个:
/:PostID(\d+):Slug(-*)?