快递路线中`/:foo *`和`/:foo(。*)`有什么区别?

时间:2016-06-16 14:15:08

标签: javascript express

在express中,我们可以用一些路径定义一些端点:

app.get('/:foo*', function(req, res) { ... });

app.get('/:foo(.*)', function(req, res) { ... });

两条路径非常相似,它们之间的区别是什么?

1 个答案:

答案 0 :(得分:1)

*匹配前面标记中的零个或多个

给定字符串/:foo/apple/banana/:foo/:1234

/:foo* matches: /:foo/apple/banana/:foo/:1234
                ^^^^^             ^^^^^

(.*)是一个捕获组,它将匹配前面所有0个或多个字符。有问题的字符是外卡,这意味着当我们看到/:foo时,我们将继续匹配,直到我们到达字符串的末尾

给定字符串/hello/world/:foo/bar?id=123

/:foo(.*) matches /hello/world/:foo/bar?id=123
                              ^^^^^^^^^^^^^^^^