2016-11-02 2 views
-1

Ich möchte Sprachen shortcodes aus window.location.pathname entfernen.RegExp - remove/en oder de/de von Pfadname string und return Rest

Mögliche Eingabezeichenfolgen

/delorean 
/de/page.html 
/en/page.html 
/
/spaceman 
/en/ 
/en 

Wunschausgabestrings

/delorean 
/page.html 
/page.html 
/
/spaceman 
/
/

Aktuelle Ansatz

(^\/(uk|de|au|en)\/{0,1})(.*) 

Ich möchte $ 3 verwenden, um die verbleibende Zeichenfolge zu verwenden, aber ich bin vor ein paar Probleme.

Es funktioniert für alle getesteten Saiten außer denen, die mit reserved string wie de | en | uk (Delorean, Deep_purple, Encephalograph, Ukraine) beginnen. Es gibt lorean, ep_purple, cephalograph, raine zurück.

Wie es für diese Zeichenfolge zu beheben?

Link- https://regex101.com/r/0GGzeg/1

+1

Arbeits Nicht sicher, aber eine Wortgrenze kann Hilfe - '^ (\/(de | au | en) \ b \ /?) (. *)' –

+0

@ WiktorStribiżew dies funktioniert nicht für Strings wie/Delorean, es gibt nichts zurück. –

+0

Entfernen Sie einfach die Option, keinen zweiten Schrägstrich zu haben: Ändern Sie '(^ \/(de | au | en) \/{0,1}) (. *)' To '(^ \/(uk | de | au | en) \ /) (. *) 'und es sollte funktionieren. – Linuxios

Antwort

2

Dies wird für Sie regex101.com arbeiten, nur mit /$3 dritten Erfassungsgruppe ersetzen /

^(\/(uk|de|au|en)\b\/?)(.*) 

mit vorhergehenden Siehe Beispiel https://regex101.com/r/0GGzeg/3

enter image description here

+1

Das ist genau meine Lösung, die angeblich nicht funktioniert, und sie wird als akzeptiert markiert? –

+0

@ Immer Sunny Danke! Es sieht genauso aus, wie Wiktor kommentierte, aber ich kann nicht verstehen, warum es vorher nicht funktioniert hat. –