ExpressJS路由正则表达式

时间:2012-09-08 19:36:44

标签: regex node.js express

我有路线:

app.get('/:id', routes.action);

它工作正常,但我需要跳过robot.txt和其他(人......) 我创建正则表达式(只有字符或数字):

/^[a-z]{0,10}$/

我如何才能仅匹配与此正则表达式匹配的ID?

4 个答案:

答案 0 :(得分:18)

将正则表达式放在括号中,如下所示:

app.get('/:id(^[a-z]{0,10}$)', routes.action);

答案 1 :(得分:4)

如果您想避免匹配物理存在的静态文件的路由,只需在调用static之前放置app.router中间件。

然后会传递静态文件(例如robots.txt),这些调用将无法通过您的路由。

问题解决了; - )。

答案 2 :(得分:2)

在内部,您提供给Express路由器的字符串无论如何都会转换为正则表达式。如果您查看the code,就可以看到您可以直接传递正则表达式。

app.get(/^\/[a-z]{0,10}$/, routes.action);

The docs也有例子。

答案 3 :(得分:0)

如果您需要多条路线:

app.routes.get 

是一个包含所有get路由的数组。 您可以更改需要更改的路由的正则表达式对象。