ExpressJS路线中的RegEx

在ExpressJS中,如何使用RegEx在一条path中纠正以下内容?

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

在这里使用RegExp的意义何在? Express模式更简单,但却与正则expression式一样强大:

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

此路线将匹配以下所有url:

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

blog.list控制器中, req.params.page将包含页码,如果没有提供,它将被undefinedundefined

似乎有可能有令人信服的理由,使这些单独的路线,但我不知道你在做什么与你的应用程序。

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

req.params [0]在路由/ blog / p / 20上应该是“20”,req.params为/ blog / p /或/ blog /,但两者都是function路由。