2015-12-24 15 views
6

Próbuję dopasować podkatalogu w adresie URL, który przychodzi po określonym katalogu:JavaScript Regex zastąpić podkatalogu w url

następnie dołączyć katalog do dopasowanej ciąg.

/applications/app1 powinny być /applications/app1/beta

/applications/app2/ powinny być /applications/app2/beta/

/applications/app2/settings powinny być /applications/app2/beta/settings

/applications/app3?q=word powinny być /applications/app3/beta?q=word

Napisałem ten:

Ale nie działa, jeśli nazwa aplikacji znajduje się na końcu łańcucha.

Uwaga: Nie mam nazwę aplikacji, wiem tylko, że wynika /applications/

+0

Upewnij się, że po zastąpieniu '/ applications/app2/settings' przez'/applications/app2/beta/settings', łatwo jest wpaść w otchłań, zastępując '/ applications/app2/beta/settings' '/ applications/app2/beta/beta/settings' które zmienia się w'/applications/app2/beta/beta/beta/settings' ... – zvone

Odpowiedz

5
path.replace(/(\/applications\/[^/?]+)/g,'$1/beta'); 

Po namyśle, wolę następujące:

path.replace(/(\/applications\/[^/?]+)($|\/|\?)(?!beta)/g,'$1/beta$2'); 

"/applications/app1/beta"  -> "/applications/app1/beta" 
"/applications/app1"   -> "/applications/app1/beta" 
"/applications/app1/settings" -> "/applications/app1/beta/settings" 
"/applications/app1?q=123"  -> "/applications/app1/beta?q=123" 

To będzie ignorować /applications/beta podczas dopasowywania.

+0

Wygląda na to, że działa, próbuje. –

+0

@Joe Hany Zaktualizowana odpowiedź – BGerrissen

+0

Dziękuję @BGerrissen tylko miejsce/beta po nazwie aplikacji –