4
在快遞,我們可以定義一些端點與一些路徑:高速路由中`/:foo *`和`/:foo(。*)`有什麼區別?
app.get('/:foo*', function(req, res) { ... });
app.get('/:foo(.*)', function(req, res) { ... });
這兩個路徑非常相似,什麼是它們之間的區別?
在快遞,我們可以定義一些端點與一些路徑:高速路由中`/:foo *`和`/:foo(。*)`有什麼區別?
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
^^^^^^^^^^^^^^^^
低水平的解釋是說,他們結束編譯成非常不同的正則表達式,第一個編譯成:'/ ^(?:\ /([:\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' /(?= $))?$/i',第二個到'/^\/((*)(?:\/(?=$))?$/我' –
看起來像一個[捕獲組]( http://www.regular-expressions.info/brackets.html)給我。 – Bergi