我对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);
我需要它来忽略“?”中的内容上。
答案 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是作为第一个参数出现还是作为任何后续参数出现。