私はこの表現がルート定義の正規表現パターンを扱っていることはほぼ肯定的ですが、やはりパターンに存在する可能性があります、私を容赦してください)。私の急行ルート定義では、私は、ルートパスに番号と一致するようにしようとしています。今のところ正規表現の正規表現では正規表現のパラメータが完全には取り込まれていない
const router = express.Router()
// pattern: ignore first capture (/)
router.route(/^(?:\/)(\d+)$/)
.get(...callback)
、捕獲数は、任意の長さにすることができるという。だから、URLが:http://localhost:8000/1234
の場合、完全な番号がキャプチャされていないことを除いて、期待通りに機能しています。コールバックにリクエストパラメータを記録すると、{ '0', '4' }
が得られます。ご覧のとおり、最後の数字は4
、数字は1234
です。何がうまくいかないのですか?私はここで精力的に頭を掻いている。正規表現をregexrとノードREPL:/^(?:\/)(\d+)$/.exec('1234')[1] === '1234'
の両方でテストすると、正しく一致しているようです。どのような助けや洞察力があれば幸いです。ありがとう。
[EDIT]:@Tolseeによって示唆されるように、私はV 4.15.5
(最新版)にV 4.15.3
から私の速達のパッケージをアップグレードしました。これは問題を解決するように思われた。今、私の正規表現パターンはそのルートのために働いています。私は問題が古いエクスプレスパッケージにあると推測しています。
あなたのルートの番号がパラメータである場合、それは 'router.route( '/:id')' – nilobarp
で捕捉できます。これについて考えるべきです。私は別のルートのためのパターンを使用した後、私の心はまだ正規表現モードであると思います。私はあなたの応答に感謝します。あなたのアプローチがうまくいきましたが、ここでは正規表現のアプローチがなぜ失敗しているのか不思議です。 –
どのExpressのバージョンを使用していますか? '4.15.5'では完璧に動作します。そして、あなたは 'req.params'が' {'0'、 '4'} 'req.params'ではなくjsオブジェクトであることを示していますか? – Tolsee