从父URL中提取URL的一部分

时间:2013-02-07 16:41:06

标签: javascript jquery

对于此网址

"http://testsite/sites/TestSubSite/objstrat/CultureConnection/Pages/default.aspx"

尝试在企业/网站之后提取所有内容。 我想要"/TestSubSite/objstrat/CultureConnection/Pages/default.aspx"

我可以得到这样的文件名:

var filename = parenturl.substring(parenturl.lastIndexOf("/") + );

但不确定如何从中间提取..

4 个答案:

答案 0 :(得分:1)

使用lastIndexOf对于片段或查询中/的任何URI引用都将失败,如http://example.com/foo/bar#/baz/boo


Google Closure's Uri module这样的图书馆可以轻松实现这一目标。

new goog.Uri(parenturl).getPath()

如果您选择的库没有URI支持,那么http://www.ietf.org/rfc/rfc3986.txt附录B建议

var urlRegex = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
var path = decodeURIComponent(urlRegex.exec(parenturl)[5]);

将为您提供路径部分。


一旦你有了这条道路,你就可以通过做类似

之类的事情剥离/sites/部分
var pathSuffix = path.replace(/^\/sites\//, '/');

答案 1 :(得分:1)

我喜欢带有DOM元素的Javascript。

var link = document.createElement('a');
link.href = "http://testsite/sites/TestSubSite/objstrat/CultureConnection/Pages/default.aspx";

link.protocol;
link.hostname;
link.port;
link.pathname;
link.search;
link.hash;
link.host;

link.pathname.replace(/^\/sites/,"") // "/TestSubSite/objstrat/CultureConnection/Pages/default.aspx"

答案 2 :(得分:0)

最简单的方法可能是使用javascript Split()函数并从结果数组中重建字符串(省略前几个项目)

    var parenturl = "http://testsite/sites/TestSubSite/objstrat/CultureConnection/Pages/default.aspx";
        var tokens = parenturl.split("/");

    for(var i=0;i<tokens .length;i++)
    {
        console.log(tokens [i]);
    }

答案 3 :(得分:0)

如何:

var parenturl = "http://testsite/sites/TestSubSite/objstrat/CultureConnection/Pages/default.aspx";
var filename = parenturl.match(/\/sites(.*)$/)[1];
alert(filename);