使用从String('/ page /:page')到RegExp(/ page /:page)的params转换Express路由不起作用

时间:2015-01-23 09:47:06

标签: regex node.js express

我只是尝试将定义为String的路由转换为定义为RegExp的路由。

app.get('/page/:page', handler);

这有效,但将其转换为RegExp不起作用,处理程序永远不会触发:

app.get(/page\/\:page/, handler);

我用几种不同的方式尝试过,似乎都没有用

app.get(/page\/\:page/, handler);
app.get(/page\/:page/, handler);
app.get(/page/:page/, handler); // error
app.get(new RegExp('/page/:page'), handler);
app.get(new RegExp('/page\/\:page/'), handler);

我可能做错了什么?

也无法正常工作

app.get(/\/page\/:page/, handler);
app.get(new RegExp('\/page\/:page'), handler);

我的网址类似于/page/xyz,我可以将'xyz'作为req.params.page。{

1 个答案:

答案 0 :(得分:3)

:var - 类型语法仅适用于字符串。对于实际的RegExps,您必须使用正常捕获组(例如/^\/page\/([^/]+)/)。然后,这些捕获在req.params上以req.params[0]req.params[1]等方式提供。