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]块中,这意味着反演,在这种情况下,这是除数字之外的任何符号。
删除^符号