2017-06-02 2 views
0

Ich versuche, einen regulären Ausdruck zu schreiben, die beide erkennen würde: Ich habe 'jobs/[^/]+/[^/]+';Regex für ein oder zwei Verzeichnisse Parsen

Aber der erste

website.com/jobs/value1

website.com/jobs/value1/value2

Im Moment Link wird nicht erkannt, aber der zweite ist.

Gibt es eine Möglichkeit, dies zu schreiben, so dass es erkennen würde, ob es ein oder zwei Verzeichnisse nach jobs und nicht, wenn es ein Drittel gab?

EDIT

ich vergaß es die ursprünglichen Fragen zu erwähnen, aber ich müsste es auch erkennen: -

website.com/jobs

sowie die beiden oben genannten Links.

+0

Was ist mit einem Tailing /? wie 'website.com/jobs /'? – Tezra

Antwort

3

Versuchen Sie, das zweite Verzeichnis optional machen:

jobs(/[^/]+){0,2}$ 

folgende Dinge passen Dies sollte:

nicht überein drei Wege nach /jobs
website.com/jobs 
website.com/jobs/value1 
website.com/jobs/value1/value2 

Aber es wäre.

Demo hier:

Regex101

+0

Awesome, das funktioniert, aber jetzt funktioniert 'website.com/jobs /' nicht, kann beides optional gemacht werden? – nsilva

+0

@nsilva jobs (\/[^ \ /] +) {0,2} \ /? $ – Tezra

+0

@nsilva Ich habe meine Antwort nach Ihren neuen Anforderungen aktualisiert. –

0

Sie können diese verwenden:

jobs/([^/]+/?){0,2}$ 

([^/]+/?) entspricht einer Folge von einem oder mehreren keine / Zeichen, optional die von einem / gefolgt. {0,2} bedeutet null, ein oder zwei mal.

+0

Ich denke, das würde 'website.com/jobs/value1/value2 /' ... entsprechen [siehe hier] (https://regex101.com/r/XmR0bV/3). –

+0

Ja. War das nicht das Problem hier? – hek2mgl