如何解决如何获取路由路径以匹配同一正则表达式中的强制性和可选字符?
我正在努力获得匹配强制性和可选字符的路由路径。
我的路线是这样的:
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(-*)?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。