2013-08-21 130 views
5

查詢字符串參數我是很新,正則表達式,需要從我們的網址刪除某些內容刪除URL與正則表達式

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

我需要從「?」刪除一切並留在我身邊:

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

這是我們用來獲取路徑數據的當前正則表達式。例如,我可以抓住「smtp」和「smtp-open-relay」(我們需要)。然而,有時我們的URL會根據用戶來自哪裏而改變,從而附加導致我們當前正則表達式爆炸的查詢字符串參數。

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

我需要它忽略來自「?」的東西。上。

+0

你可以嘗試在分裂? – scrappedcola

+5

擺脫查詢字符串真的很容易。只要這樣做:'url = url.split('?')[0]' – musicnothing

回答

17

正則表達式是不是你需要的可能更多。

你可以做以下後,除去?和一切(查詢 字符串+哈希):

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

如果你真的想脫光只查詢字符串,你可以保留 哈希通過從window.location對象重建的網址:

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

如果你想查詢字符串,你可以用window.location.search閱讀。

+0

我用這個解決方案。感謝大家的幫助! – cpeele00

0

如果你這樣做是在瀏覽器,讓瀏覽器做了解析:

location.origin + location.pathname 

或者任意網址:

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

我只用這一個

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

如果指數是-1,該怎麼辦? – Learner

+0

那麼well的數據是'undedefined' –

0

使用此功能:

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

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