我有以下类型的页面:
/
)/929
或/929/
)最终会重定向到/929/<CHAPTER>
,其中<CHAPTER>
是1到929之间的自然数/929/<CHAPTER>
或/929/<CHAPTER>/
章,其中<CHAPTER>
是1到929之间的自然数/929/<CHAPTER>/<ARTICLE_ID>
或/929/<CHAPTER>/<ARTICLE_ID>/
的文章,其中<CHAPTER>
是1到929之间的自然数,并且是1,2 ... 99999999之类的自然数1至3个页面类型可以正常工作。第四是抛出:
无法获取/ 929/233/3027
这里的代码:
app.get("/", rootMiddleware);
app.get("/929[/]{0,1}", todaysChapterMiddleware);
app.get("/929/:chapter(([1-9]|[1-9][0-9]|[1-8][0-9]{2}|9[01][0-9]|92[0-9]))[/]{0,1}", chapterMiddleware);
app.get("/929/:chapter(([1-9]|[1-9][0-9]|[1-8][0-9]{2}|9[01][0-9]|92[0-9]))/:articleId((\d+))[/]{0,1}", articleMiddleware);
答案 0 :(得分:1)
由于正则表达式通常是文字字符串的一部分,因此请务必对所有\字符加上反斜杠进行转义,例如\\ d +。
所以正确的第四条路线应该是:
app.get("/929/:chapter(([1-9]|[1-9][0-9]|[1-8][0-9]{2}|9[01][0-9]|92[0-9]))/:articleId((\\d+))[/]{0,1}", articleMiddleware);
答案 1 :(得分:1)
添加\以转义\
如此
来自
app.get("/929/:chapter(([1-9]|[1-9][0-9]|[1-8][0-9]{2}|9[01][0-9]|92[0-9]))/:articleId((\d+))[/]{0,1}", articleMiddleware);
到
app.get("/929/:chapter(([1-9]|[1-9][0-9]|[1-8][0-9]{2}|9[01][0-9]|92[0-9]))/:articleId((\\d+))[/]{0,1}", articleMiddleware);
答案 2 :(得分:-1)
在app.js主文件中:
app.use("/",routesfile);
在路线文件中:
router.get('/929/<CHAPTER>',controller file)