私は正規表現があまり得意ではないので、これが正しく行われていることを確認したいと思います。 /discussion/:slug/
と/page/:slug/
という2つの非常に類似したルートがあるとします。これらの両方のページに一致するルートを作成します。
app.get('/[discussion|page]/:slug', function(req, res, next) {
...enter code here...
})
これは正しい方法ですか?今は、2つの別々のルートを作成しています。
someFunction = function(req, res, next) {..}
app.get('/discussion/:slug', someFunction)
app.get('/page/:slug', someFunction)
app.get('/:type(discussion|page)/:id', ...)
は動作します
文字列ではなく、リテラルjavascript正規表現オブジェクトを使用する必要があります。@ sarnoldは、代替のかっこが必要です。角括弧は文字クラス用です。
const express = require("express");
const app = express.createServer();
app.get(/^\/(discussion|page)\/(.+)/, function (req, res, next) {
res.write(req.params[0]); //This has "discussion" or "page"
res.write(req.params[1]); //This has the slug
res.end();
});
app.listen(9060);
(.+)
は、少なくとも1文字のスラッグが存在する必要があることを意味します。存在しない場合、このルートは一致しません。つかいます (.*)
空のナメクジにも一致させたい場合。