/ / Jak uczynić ostatnią część tego REGEXU opcjonalną? - javascript, regex

Jak uczynić ostatnią część tego REGEXU opcjonalną? - javascript, regex

Przeszukuję wszystkie linki na stronie i dopasowuję ich wartości href do następującego wzoru:

([^/]+)/([0-9]+)/([^/]+)

Problem polega na tym, że istnieją dwa typy formatów linków na stronie:

1. /video/123/slug
2. /video/123

Numer 1. zostaje złapany przy użyciu powyższego wyrażenia regularnego, ale drugi nie. Chciałbym, aby trzeci fragment regex (the slug) był opcjonalny, więc oba formaty linków zwracają wartość true, gdy są dopasowane przed regex. Jak to zrobić?

Odpowiedzi:

3 dla odpowiedzi № 1

Umieść ostatni bit w nawiasach grupy, która nie przechwytuje i dodaj ?:

([^/]+)/([0-9]+)(?:/([^/]+))?

2 dla odpowiedzi nr 2

Posługiwać się ? kwantyfikator, co sprawia, że ​​twój wzór jest opcjonalny. Dopasowuje 0 lub 1 wystąpienie wzorca.

Musisz także zgrupować ostatni slash, z ostatnią częścią swojego regex, w grupie, która nie przechwytuje.

([^/]+)/([0-9]+)(?:/([^/]+))?

0 dla odpowiedzi № 3

Jeśli dodasz ? to powinno uczynić ostatnią część wzoru opcjonalną.