2017-03-16 18 views
0

Ich habe einen Routing-Controller, der eine Route mit Parametern wie so akzeptiert:URL optionale Parameter regulärer Ausdruck

/news/:id

und ich bekomme die ID mit diesem regulären Ausdruck:

:([\w]+)

Der Parameter kann jedoch mit dieser Syntax optional sein:

/users/[:id]

Wie kann ich den regulären Ausdruck ändern, um beide Fälle zu erfassen?

+0

Was ist der eigentliche hier Anwendungsfall? Warum parst du diesen Routenplatzhalter mit einer Regex? – 1252748

+0

https://regex101.com/r/M5wELN/2/ –

Antwort

0

Regex: (?:\:[\w]+|\[\:\w+\])

Regex demo

+0

Danke, aber das funktioniert für: [ID] nicht [: ID] – ivop

+0

@ivop hat meinen Beitrag aktualisiert. Sie können jetzt überprüfen. –

0

Ich denke, dies ist ein a/b Problem, aber das wird für Arbeit, was Sie gefragt haben:

\[?\w+]? 

Ihre Route Platzhalter Unter der Annahme, sind nur Kleinbuchstaben Zahlen und Ziffern. Natürlich würde es sich ändern, wenn Sie mehr Details über die Struktur Ihrer Platzhalter zur Verfügung stellen würden.