2015-12-24 11 views
6

Sto cercando di abbinare una sottodirectory in un URL che viene dopo una specifica directory:Javascript Regex per sostituire una sottodirectory in url

quindi aggiungere una directory alla stringa corrispondente.

/applications/app1 dovrebbe essere /applications/app1/beta

/applications/app2/ dovrebbe essere /applications/app2/beta/

/applications/app2/settings dovrebbe essere /applications/app2/beta/settings

/applications/app3?q=word dovrebbe essere /applications/app3/beta?q=word

ho scritto questo:

path = path.replace(/(\/applications\/(.*)(\/|\s|\?))/, '$1/beta');

Ma non funziona se il nome dell'app si trova alla fine della stringa.

Nota: non ho il nome dell'applicazione so solo che ne consegue /applications/

+0

Accertarsi che dopo aver sostituito '/ applications/app2/settings' con'/applications/app2/beta/settings', è facile cadere nell'abisso sostituendo '/ applications/app2/beta/settings' con '/ applications/app2/beta/beta/settings' che diventa'/applications/app2/beta/beta/beta/settings' ... – zvone

risposta

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

Dopo alcune considerazioni, io preferisco il seguente:

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" 

Si ignorerà /applications/beta quando si abbina

+0

Sembra funzionante, provandolo. –

+0

@Joe Hany Risposta aggiornata – BGerrissen

+0

Grazie @BGerrissen basta inserire/beta dopo il nome dell'app –