我有一个简单的正则表达式,它应匹配由字母(0-5)组成的单词,但它似乎不起作用。正则表达式应该如何在ExpressJS中使用?我尝试验证的网址可能类似于something.com/abcd
var express = require("express"),
app = express();
app.get("/:id(^[a-z]{0,5}$)", function(req, res) {
res.send("The right path!");
});
app.listen(8000);
答案 0 :(得分:6)
要设置接受/
后跟最多五个ascii字符的网址,您可以这样做:
var express = require("express"),
app = express();
app.get("/[a-z]{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
注意:快递case insensitive routing by default.要更改它,请将其放在脚本的顶部:
app.set('case sensitive routing', true);
现在,[a-z]
仅匹配小写字符:GET /abc
但不匹配GET /ABC
答案 1 :(得分:1)
要明确: 原始问题是匹配
中的express.js路由的有效语法NAMED参数
唯一的错误是在RegExp中有开始/结束锚点。 我认为它们是自动添加的。
A nice tool to validate express routes说没关系:
/:id([a-z]{0,5})
我强烈建议使用“named param”语法,因为 app.param是一个不错的功能。
答案 2 :(得分:0)
我不知道app.get是做什么的,但如果我们谈论的是正则表达式:
^可以位于第一个位置。这意味着需要从头开始比较字符串。 或者,在[^ \ d]块中,这意味着反转,在这种情况下,这是除数字之外的任何符号。
删除^符号