2016-12-27 10 views
0

Ich habe diesen regulären Ausdruck:mit regulären Ausdrücken in Javascript

var a = window.location.href.replace(/((.*)[&|?])(sessionid(=[^&]*))([&|#](.*))/, '$1$5'); 

dass die sessionid von einer Beispiel-URL wie folgt zu entfernen:

http://...&parent_location=Test&abc=123&sessionid=q26bh6bkm8g49aeopem2obdm87igrsfe&... 

Das Ergebnis wird sein:

http://...&parent_location=Test&abc=123&&... 

Meine Frage ist, wenn in diesem ersetzen kann ich die ersetzen auch für die parent_location

+0

Was ist Ihre erwartete Ausgabe? – anubhava

+4

1. Parsen Sie die URL/Abfrage-Zeichenfolge in ein Array/Objekt. 2. Bearbeiten Sie die Daten nach Bedarf. 3. Reformat in eine URL. - Viel vernünftiger als Regexen. – deceze

+0

Dieses Ergebnis: http: //...&& abc = 123 && ... Ich möchte auch die parent_location Query String entfernen, wäre dankbar entfernen Sie auch die & nicht benötigt – Piero

Antwort

2

Verwenden Sie eine einzelne Regex mit unnötiger Erfassungsgruppe entfernt.

str.replace(/([&?])(?:sessionid|parent_location)=[^&#]*(?=[&#]|$)/m, '$1') 

DEMO

+0

Funktioniert nicht mit einem Aschemarke http: // ... & parent_location = Test & abc = 123 & sessionid = q26bh6bkm8g49aeopem2obdm87igrsfe # abc/abc sollte bleiben: http: //...&abc=123#abc/abc – Piero

+0

fügen Sie einfach '#' innerhalb der ersten Zeichenklasse hinzu .. ie, '[&? #] ' –

0

Sie können mehrere .replace-Methoden in einer Zeile hinzufügen.

var a = window.location.href 
    .replace(/((.*)[&|?])(sessionid(=[^&]*))([&|#](.*))/, '$1$5') 
    .replace(/*statement*/); 
Verwandte Themen