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

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

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

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

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

最佳答案 *匹配前面标记中的零个或多个

给定字符串/: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
                              ^^^^^^^^^^^^^^^^
点赞