2016-06-16 9 views
4

、我々はいくつかのパスで、いくつかのエンドポイントを定義することができます。エクスプレスルートの `/:foo *`と `/:foo(。*)`の違いは何ですか? Expressで

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

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

2つのパスが非常に似ており、それらの間の違いは何ですか?

+0

を考えると一致し続ける意味ワイルドカードです'/ ^(?:\ /([:\:])?(?:\/[^ \\ /] +?)*))? /(?= $))?$/i'と2番目の '/^\/(.*)(?:\/(?=$))?$/i' –

+0

[キャプチャグループ]のように見えます( http://www.regular-expressions.info/brackets.html)私に。 – Bergi

答えて

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 
           ^^^^^^^^^^^^^^^^ 
関連する問題