ExpressJS – 用于匹配path的正则expression式不起作用

我有一个简单的正则expression式,应该只匹配由字母(0-5)组成的单词,但它似乎并不工作。 正则expression式应该如何在ExpressJS中使用? 我想validation的URL可能看起来像something.com/abcd

 var express = require("express"), app = express(); app.get("/:id(^[az]{0,5}$)", function(req, res) { res.send("The right path!"); }); app.listen(8000); 

要设置一个接受/最多五个ASCII字符的URL,你可以这样做:

 var express = require("express"), app = express(); app.get("/[az]{0,5}$", function(req, res){ res.send("Right path!"); }); app.listen(8000); 

结果:

 GET http://localhost:8000/ Right path! GET http://localhost:8000/abcde Right path! GET http://localhost:8000/abcdef Cannot GET /abcdef 

注意: 默认情况下, Express不区分大小写路由。 要改变它,把它放在脚本的顶部:

 app.set('case sensitive routing', true); 

现在, [az]将仅匹配小写字符: GET /abc但不匹配GET /ABC

为了清楚起见:最初的问题是匹配express.js路由的有效语法

NAMED参数

唯一的错误是在RegExp中有起始/终止锚点。 我认为他们是自动添加的。

一个很好的工具来validation快速路线说这是很好的:

/:id([az]{0,5})

顺便说一句:谁低估了这个问题:对你感到羞耻。

我强烈build议使用“命名参数”语法,因为app.param是一个很好的function。

我不知道app.get是什么,但是如果我们谈论正则expression式:

^可以位于第一位置。 这意味着需要从头开始比较string。 或者,在[^ \ d]块中,这意味着反演,在这种情况下,这是除数字之外的任何符号。

删除^符号