Wie kann ich einen regulären Ausdruck mit OR-Bedingungen in Express (V4.15) Routing angeben?Express: logisch oder in Routing
Ich möchte die folgenden Strecken nach der gleichen Methode zeigen
/video/:videoId
/movies/:videoId
/media/:videoId
Als ich versuchte,
app.get('/(video|media|movies)/:videoId', this.redirectToVideo.bind(this));
ich folgende Fehlermeldung bekam
SyntaxError: Invalid regular expression: /^\/(?(?:([^\/]+?))|media|movies)\/(?:([^\/]+?))\/?$/: Invalid group
Wenn ich ohne die versuchten ()
app.get('/video|media|movies/:videoId', this.redirectToVideo.bind(this));
die ersten 2 Routen arbeiten, aber nicht, dass man
/media/:videoId
Dank
Sie müssen den Schrägstrich '/' mit einem umgekehrten Schrägstrich als '\ /' umgehen. Verwenden Sie dies: '\/(Video | Medien | Filme) \ /: videoId' – ctwheels
Auch der Fehler, den Sie bekommen, scheint für eine andere Regex zu sein? '^ \/(? (?: ([^ \ /] +?)) | Medien | Filme) \/(?: ([^ \ /] +?)) \ /? $'. Die erste Nicht-Capture-Gruppe fehlt ':' nach dem Fragezeichen '(?: ...)' Wenn es sich um eine Capture-Gruppe handelt, entfernen Sie das Fragezeichen '?' Als '(...)' – ctwheels