2013-08-21 11 views
5

Jestem całkiem nowy regex i trzeba usunąć niektóre treści z naszego urlUsunąć kwerendy parametry z adresu URL z regex

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

muszę usunąć wszystko z „?” i dalej, zostawiając mnie tylko:

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

Oto nasze obecne wyrażenie wyrażenia regularnego, którego używamy do pobierania danych trasy. Na przykład mogę pobrać "smtp" i "smtp-open-relay" (których potrzebujemy). Czasami jednak nasz URL zmienia się w zależności od tego, skąd przychodzi użytkownik, tym samym dołączając parametry zapytania, które powodują, że nasze wyrażenie regularne wyskakuje.

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

Potrzebuję go, aby zignorować rzeczy z "?" na.

+0

można spróbować podział na?. – scrappedcola

+5

Bardzo łatwo pozbyć się ciągu zapytania. Po prostu wykonaj to: 'url = url.split ('?') [0]' – musicnothing

Odpowiedz

17

Wyrażenie regularne jest prawdopodobnie bardziej niż trzeba.

Można wykonać następujące czynności, aby usunąć wszystko (zapytanie ciąg + hash) ? i po nim:

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

Jeśli naprawdę chciał się rozebrać tylko ciąg kwerendy, można zachować hash przez rekonstrukcji URL z obiektu window.location:

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

Jeśli chcesz ciąg kwerendy, można go odczytać z window.location.search.

+0

Poszedłem z tym rozwiązaniem. Dzięki wszystkim za pomoc! – cpeele00

0

Jeśli robisz to w przeglądarce, niech przeglądarka zrobić parsowania:

location.origin + location.pathname 

lub do dowolnych adresów URL:

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

Używałem tej jednej

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

Co jeśli indeks wynosi -1? – Learner

+0

, a następnie routeData jest "nieokreślona" –

0

korzystania z funkcji:

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

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

Powiązane problemy