ExpressJS路由中的正则表达式

3
在ExpressJS中,如何使用正则表达式在一个路由中写入以下内容?
app.get('/blog', blog.list);
app.get('/blog/p/:page?', blog.list);
2个回答

8
在这里使用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


0

看起来分别设置这些路由可能有令人信服的理由,但我不确定你在应用程序中要做什么。

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

在路由 /blog/p/20 中,req.params[0] 应该为 "20",而对于 /blog/p/ 或 /blog/,req.params 为 null,但两者都是功能路由。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接