ExpressJS路线中的RegEx

时间:2013-07-23 10:39:25

标签: javascript regex node.js express

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

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

2 个答案:

答案 0 :(得分:5)

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

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

此路线将匹配以下所有网址:

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

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

答案 1 :(得分:0)

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

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

req.params [0]在路线/ blog / p / 20上应为“20”,req.params为{blog / p /或/ blog /的null,但两者都是功能性的路线。