2013-08-21 175 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'));