使用regex从url中删除查询字符串参数

时间:2013-08-21 19:35:27

标签: javascript jquery regex

我对regex很新,需要从我们的网址中删除一些内容

 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);

我需要它来忽略“?”中的内容上。

5 个答案:

答案 0 :(得分:17)

正则表达式可能超出您的需要。

您可以执行以下操作来删除?和所有内容(查询 字符串+哈希)之后:

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

如果您真的想要仅删除查询字符串,则可以保留 通过从window.location对象重建URL来实现哈希:

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

如果您需要查询字符串,可以使用window.location.search来阅读。

答案 1 :(得分:5)

我刚用过这个

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

答案 2 :(得分:0)

如果您在浏览器中执行此操作,请让浏览器执行解析:

location.origin + location.pathname

或任意网址:

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

答案 3 :(得分:0)

使用此功能:



readout.txt




答案 4 :(得分:0)

以下是删除给定参数的更干净的方法,例如:prop1形式的url查询字符串。 可以通过访问

在url中找到查询字符串
  

window.location.search

在这里为prop1应用正则表达式:

  

var queryStringWithoutProp1 = window.location.search.replace(/(&&?prop1 =)(。[^&] *)/,“”);

queryStringWithoutProp1必须返回不包含prop1 =来自查询字符串的值-参数-值组合的查询字符串

注意:'&?'确保prop1是作为第一个参数出现还是作为任何后续参数出现。