Javascript Regex - 在字符串后匹配所有内容

时间:2016-09-23 17:52:15

标签: javascript regex

我正在尝试使用JS正则表达式删除我的网址中的字符串之后的所有内容。例如www.myurl/one/two/three/?a=b&c=d我想删除字符串“three /”之后的所有内容。我怎么写一个正则表达式来匹配这个?

4 个答案:

答案 0 :(得分:2)

试试这个:



function getPathFromUrl(url) {
  return url.split("?")[0];
}

var url = 'www.myurl/one/two/three/?a=b&c=d';
var result = getPathFromUrl(url);
alert(result);




答案 1 :(得分:1)

使用内置功能来操作网址。

var a = document.createElement('a');
a.href = "http://www.myurl/one/two/three/?a=b&c=d";
a.search = '';
console.log(a.href);

注意:

  1. search元素的a属性是指以问号开头的部分。

  2. 此处需要http://;否则,URL将被解释为相对于当前URL。

  3. 如果您更喜欢使用正则表达式,那么您可以删除以问号开头的所有内容:

    "www.myurl/one/two/three/?a=b&c=d".replace(/\?.*/, '')
    

    或者,您可以匹配您想要保留的内容,例如最多问号,使用:

    "www.myurl/one/two/three/?a=b&c=d".match(/.*(?=\?)/)[0]
    

    您需要[0],因为match返回一个数组,其第一个元素是整个匹配。这里的?=预见。实际上与

    相同
    "www.myurl/one/two/three/?a=b&c=d".match(/[^?]+/)[0]
    

    或者,如果您想特别匹配three/

    "www.myurl/one/two/three/?a=b&c=d".match(/.*three\//)[0]
    

答案 2 :(得分:0)

这是一个快速的方法。



var str = 'www.myurl/one/two/three/?a=b&c=d'

var newStr = str.replace(/(.*\/three\/).*/, '$1')

alert(newStr)




答案 3 :(得分:0)

或者基本上使用String和Array的方法:

var string = "www.myurl/one/two/three/?a=b&c=d";
var array = string.split('/');
array.pop();
var result = array.join("/");
console.log(result); //www.myurl/one/two/three