从URL获取协议,主机名和路径

时间:2016-11-18 21:48:43

标签: javascript regex

我制作了一个正则表达式,用于捕获链接的短URL。例如:

https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=picture%20of%20a%20potato

我的正则表达式是:

/(https:\/\/.+?)\/.+/

现在这只会捕获:

https://www.google.com

我现在要做的是将捕获的RegEx存储到变量中。非常感谢任何帮助或建议。

3 个答案:

答案 0 :(得分:2)

<a> DOM元素为您提供了这种href分割!方法如下:

var a = document.createElement('a');
a.href = 'https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=picture%20of%20a%20potato';
console.log({
        protocol: a.protocol,
        host: a.host,
        hostname: a.hostname,
        port: a.port,
        pathname: a.pathname,
        search: a.search
});

返回:

{
  "protocol": "https:",
  "host": "www.google.com",
  "hostname": "www.google.com",
  "port": "",
  "pathname": "/webhp",
  "search": "?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8"
}

有关详细信息,请参阅https://www.abeautifulsite.net/parsing-urls-in-javascript

答案 1 :(得分:1)

你的正则表达式不会捕获https://www.google.com

使用捕获组并使用regex.exec()应用正则表达式。然后访问返回的数组以设置变量:

&#13;
&#13;
str="https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=picture%20of%20a%20potato";
regex = new RegExp('(https?://.*?\)/');
match = regex.exec(str)[1];
console.log(match);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你不需要&#34; g&#34;旗帜,所以它是

var matchResult = someUrlString.match(/(https?:.*?\.{1,3})/i);

然后matchResult将是一个数组(或null)。如果不是null,则正则表达式将导致索引0和1都包含匹配的文本。

您的正则表达式,用于记录,匹配​​

之类的内容
  • HTTP:富
  • 的https:... zimbabwe_is_nice
  • http:您好,我的名字是亚当,您考虑过铝制壁板吗?它可以为您节省数千美元的维护费用。