在express中,我们可以用一些路径定义一些端点:
app.get('/:foo*', function(req, res) { ... });
app.get('/:foo(.*)', function(req, res) { ... });
两条路径非常相似,它们之间的区别是什么?
答案 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
^^^^^^^^^^^^^^^^