gpt4 book ai didi

javascript - 如何解析一个URL?

转载 作者:行者123 更新时间:2023-12-02 22:59:23 25 4
gpt4 key购买 nike

如果有一件事我无法理解,那就是正则表达式。

经过一番搜索,我终于找到了这个适合我的需求:

function get_domain_name()
{
aaaa="http://www.somesite.se/blah/sdgsdgsdgs";
//aaaa="http://somesite.se/blah/sese";
domain_name_parts = aaaa.match(/:\/\/(.[^/]+)/)[1].split('.');
if(domain_name_parts.length >= 3){
domain_name_parts[0] = '';
}
var domain = domain_name_parts.join('.');
if(domain.indexOf('.') == 0)
alert("1"+ domain.substr(1));
else
alert("2"+ domain);
}

它基本上给了我回域名,无论如何我也可以得到域名后面的所有东西吗?在本例中,它将是来自 aaaa 变量的 /blah/sdgsdgsdgs

最佳答案

编辑(2020):在现代浏览器中,您可以使用内置的 URL Web API。

https://developer.mozilla.org/en-US/docs/Web/API/URL/URL

var url = new URL("http://www.somesite.se/blah/sdgsdgsdgs");
var pathname = url.pathname; // returns /blah/sdgsdgsdgs
<小时/>

您应该使用 JavaScript DOM API 提供的内置 URL 解析器,而不是依赖可能不可靠的*正则表达式:

var url = document.createElement('a');
url.href = "http://www.example.com/some/path?name=value#anchor";

这就是解析 URL 所需要做的全部工作。其他一切都只是访问解析的值:

url.protocol; //(http:)
url.hostname; //(www.example.com)
url.pathname; //(/some/path)
url.search; // (?name=value)
url.hash; //(#anchor)

在本例中,如果您要查找 /blah/sdgsdgsdgs,则可以使用 url.pathname 访问它

基本上,您只是在 JavaScript 中创建一个链接(从技术上讲,是 anchor 元素),然后您可以直接调用已解析的片段。 (由于您没有将其添加到 DOM,因此它不会在任何地方添加任何不可见链接。)它的访问方式与 location 对象上的值相同。

(灵感来自 this wonderful answer 。)

编辑:重要说明:Internet Explorer 似乎有一个错误,它在此类对象的 pathname 属性上省略了前导斜杠。您可以通过执行以下操作将其标准化:

 url.pathname = url.pathname.replace(/(^\/?)/,"/");

注意:*:我说“可能不可靠”,因为尝试构建或找到一个包罗万象的 URL 解析器可能很诱人,但有很多很多条件、边缘情况和宽容解析技术可能没有被考虑或得到适当支持;浏览器可能最擅长实现此逻辑(因为解析 URL 对于其正常操作至关重要),因此我们应该保持简单并将其留给浏览器。

关于javascript - 如何解析一个URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6168260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com