2013-08-21 5 views
5

Ich bin ziemlich neu in regex und einige Inhalte unserer urlRemove Parameter aus URL mit regex Abfragezeichen

http://mysite.blah/problem/smtp/smtp-open-relay?page=prob_detail&showlogin=1&action=smtp:134.184.90.18 

Ich brauche entfernen müssen alles aus dem „?“ Entfernen und auf, lassen Sie mich nur:

http://mysite.blah/problem/smtp/smtp-open-relay 

Hier ist unsere aktuelle Regex-Ausdruck, den wir verwenden, um die Routendaten zu greifen. Zum Beispiel kann ich "smtp" und "smtp-open-relay" (was wir brauchen) greifen. Aber manchmal ändert sich unsere URL je nachdem, woher der Benutzer kommt, und hängt die Querystring-Parameter an, die unseren aktuellen Regex-Ausdruck in die Luft jagen.

// Retrieve the route data from the route 
var routeData = /([0-9a-zA-Z_.-]+)\/([0-9a-zA-Z_.-]+)$/g.exec(route); 

Ich brauche es, um Dinge aus dem "?" auf.

+0

Sie Splitting auf die versuchen könnte?. – scrappedcola

+5

Es ist wirklich einfach, die Abfragezeichenfolge loszuwerden. Tun Sie das einfach: 'url = url.split ('?') [0]' – musicnothing

Antwort

17

Ein regulärer Ausdruck ist wahrscheinlich mehr als Sie benötigen.

Sie könnten das tun, nach dem ? und alles (Abfrage string + hash), nachdem es zu entfernen:

var routeData = route.split("?")[0]; 

Wenn Sie wirklich nur die Query-String-Streifen wollen, könnten Sie die Hash erhalten durch die URL aus dem window.location Objekt zu rekonstruieren:

var routeData = window.location.origin + window.location.pathname + window.location.hash; 

Wenn Sie den Query-String mögen, können Sie es mit window.location.search lesen.

+0

Ich ging mit dieser Lösung. Danke allen für die Hilfe! – cpeele00

0

Wenn Sie tun dies im Browser, lassen Sie den Browser, um das Parsen tun:

location.origin + location.pathname 

Oder für beliebigen URLs:

function withoutQS(_url) { 
    var url = document.createElement('a'); 
    url.href = _url; 
    return url.origin + url.pathname; 
} 
5

i verwendet nur diese eine

var routeData= route.substring(0, route.indexOf('?')); 
+0

Was ist, wenn der Index von -1 ist? – Learner

+0

well routeData ist dann'undefiniert' –

0

Mit dieser Funktion:

var getCleanUrl = function(url) { 
 
    return url.replace(/#.*$/, '').replace(/\?.*$/, ''); 
 
}; 
 

 
// get rid of hash and params 
 
console.log(getCleanUrl('https://sidanmor.com/?firstname=idan&lastname=mor'));