ExpressJS路由中的RegEx

RegEx in ExpressJS Route

本文关键字:RegEx 路由 ExpressJS      更新时间:2023-09-26

在ExpressJS中,如何使用RegEx在一个路由中纠正以下问题?

app.get('/blog', blog.list);
app.get('/blog/p/:page?', blog.list);

在这里使用RegExp有什么意义?Express模式更简单,但几乎和正则表达式一样强大:

app.get('/blog(?:/p/:page([0-9]+)?)?', blog.list);

此路由将匹配以下所有URL:

  • /blog
  • /blog/
  • /blog/p
  • /blog/p/
  • /blog/p/123

blog.list中,控制器req.params.page将包含页码,如果未提供,则为undefined

制作这些单独的路线似乎有令人信服的理由,但我不确定你的应用程序在做什么。

app.get(/^'/blog(?:'/p'/([0-9]+)?)?/, blog.list);

req.params[0]在路由/blog/p/20处应为"20",req.params作为/blog/p/或/blogg/的null,但两者都作为功能路由。