文字列の代わりに正規表現を使用します。
app.get(/^\/(.+)/, function(req, res) {
var href = req.params[0]; // regexp's numbered capture group
});
文字列構文 ( ) は使用できないことに注意してください。Expressapp.get('/:href(.+)')
では、ルート文字列で正規表現の小さなサブセットしか許可されておらず、これらの正規表現をルートの特定のコンポーネントの条件チェックとして使用するためです。条件で一致したコンテンツを取得することも、コンポーネント (スラッシュで区切られた URL の一部) をまたいで一致させることもできません。
例えば:
app.get('/:compa([0-9])/:compb([a-z]/')
このルートは、最初のコンポーネント ( compa ) が 1 桁の数字で、2 番目のコンポーネント ( compb ) が 1 文字の az である場合にのみ一致します。
'/:href(.+)'
「コンテンツが何かの場合にのみ最初のコンポーネントに一致する」と言いますが、これはあまり意味がありません。とにかく、それがデフォルトの動作です。さらに、sourceを調べると、Express が実際にその条件のドットをリテラルに強制していることがわかります。
たとえば、app.get('/:href(.+)')
実際には次のようにコンパイルされます。
/^\/(?:(\.+))\/?$/i
your がエスケープされていることに注意してください.
。したがって、このルートは 1 つ以上のピリオドにのみ一致します。