/ / Powtarzanie grup regex url path, node.js - regex, node.js, express

Powtarzające się adresy URL regex grup, node.js - regex, node.js, express

Próbuję wyodrębnić parametry trasy ekspresowej za pomocą wyrażenia regularnego.

Na przykład:

www.test.com/something/:var/else/:var2

Próbuję z tym wyrażeniem regularnym:

.*/?([:]+w+)+

ale dostaję tylko ostatnią dopasowaną grupę.

Czy ktoś wie, jak dopasować oba :var i :var2.

Odpowiedzi:

1 dla odpowiedzi № 1

Pierwszy problem polega na tym .* jest chciwy, a zatem ominie wszystkie mecze, aż do znalezienia ostatniego. Oznacza to, że pierwszy :var jest ominięty.

Jednak, gdy szukasz zmienna liczba grup przechwytywania (dzięki dzięki @MichaelTang), zalecam stosowanie dwóch wyrażeń regularnych w sekwencji. Pierwsze użycie

^(?:.*?/?:w+)+$

wykryć które linie zawierają elementy dwukropka...

Wizualizacja wyrażenia regularnego

Demo Debuggex

... a następnie kilkakrotnie przeszukaj tę linię, po prostu

/:(w+)

Powoduje to umieszczenie tekstu po dwukropku w grupie przechwytywania pierwszej.

Wizualizacja wyrażenia regularnego

Demo Debuggex


1 dla odpowiedzi nr 2

Oto jak możesz dopasować oba:

www.test.com/something/:var/else/:var2".match(/:(w+)/g)
[":var", ":var2"]