如果有一件事我就是想不通,那就是正则表达式。
因此,经过大量的搜索,我终于找到了这个适合我的需求:
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
。
发布于 2011-05-29 14:25:08
请注意,此解决方案不是最好的。我做这个只是为了满足操作员的要求。我个人建议研究一下其他的答案。
执行regexp后的THe将返回域和其余部分。:\/\/(.[^\/]+)(.*)
我建议您在这里学习RegExp文档:http://www.regular-expressions.info/reference.html
使用你的函数:
function get_domain_name()
{
aaaa="http://www.somesite.se/blah/sdgsdgsdgs";
//aaaa="http://somesite.se/blah/sese";
var matches = aaaa.match(/:\/\/(?:www\.)?(.[^/]+)(.*)/);
alert(matches[1]);
alert(matches[2]);
}
发布于 2011-05-29 14:46:09
编辑(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提供的内置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中创建一个链接(从技术上讲,是锚元素),然后就可以直接调用解析后的片段。(因为您没有将其添加到DOM中,所以它不会在任何地方添加任何不可见的链接。)访问它的方式与访问location
对象上的值的方式相同。
(灵感来自this wonderful answer。)
编辑:一个重要的注意事项: Internet Explorer似乎有一个错误,它省略了对象上pathname
属性的前导斜杠,如下所示。您可以通过执行以下操作来将其标准化:
url.pathname = url.pathname.replace(/(^\/?)/,"/");
注意:*:我说“潜在的不可靠”,因为尝试构建或找到一个包罗万象的URL解析器是很有诱惑力的,但有很多条件、边缘情况和容错的解析技术可能没有被考虑或适当地支持;浏览器可能最擅长实现这个逻辑(因为解析URL对于它们的正确操作至关重要),所以我们应该保持它的简单性,并把它留给浏览器。
发布于 2011-05-29 14:27:08
(参见附录B)提供了一个正则表达式来解析URI部分:
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
12 3 4 5 6 7 8 9
哪里
scheme = $2
authority = $4
path = $5
query = $7
fragment = $9
示例:
function parse_url(url) {
var pattern = RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?");
var matches = url.match(pattern);
return {
scheme: matches[2],
authority: matches[4],
path: matches[5],
query: matches[7],
fragment: matches[9]
};
}
console.log(parse_url("http://www.somesite.se/blah/sdgsdgsdgs"));
给出
Object
authority: "www.somesite.se"
fragment: undefined
path: "/blah/sdgsdgsdgs"
query: undefined
scheme: "http"
https://stackoverflow.com/questions/6168260
复制