ExpressJS - 用于匹配路径的正则表达式不起作用

010*_*101 1 javascript regex node.js express

我有一个简单的正则表达式,它应该匹配由字母(0-5)组成的单词,但它似乎不起作用.正则表达式应该如何在ExpressJS中使用?我试图验证的URL可能看起来像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);
Run Code Online (Sandbox Code Playgroud)

gre*_*eke 6

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

var express = require("express"),
app = express();

app.get("/[a-z]{0,5}$", function(req, res){
    res.send("Right path!");
});
app.listen(8000);
Run Code Online (Sandbox Code Playgroud)

结果:

GET http://localhost:8000/
Right path!

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

GET http://localhost:8000/abcdef
Cannot GET /abcdef
Run Code Online (Sandbox Code Playgroud)

注意:默认情况下, Express会执行不区分大小写的路由.要更改它,请将其放在脚本的顶部:

app.set('case sensitive routing', true);
Run Code Online (Sandbox Code Playgroud)

现在,[a-z]只匹配小写字符:GET /abc但不是GET /ABC