Javascript Regex 摆脱 URL 的最后一部分 - 在最后一个斜杠之后

Posted

技术标签:

【中文标题】Javascript Regex 摆脱 URL 的最后一部分 - 在最后一个斜杠之后【英文标题】:Javascript Regex to get rid of last part of URL - after the last slash 【发布时间】:2011-09-13 06:33:48 【问题描述】:

基本上我需要一个 JS 正则表达式来弹出 URL 的最后一部分。关键是,如果只是域名,比如http://google.com,我不希望有任何改变。

以下是示例。非常感谢任何帮助。

http://google.com -> http://google.com
http://google.com/ -> http://google.com
http://google.com/a -> http://google.com
http://google.com/a/ -> http://google.com/a
http://domain.com/subdir/ -> http://domain.com/subdir
http://domain.com/subfile.extension -> http://domain.com
http://domain.com/subfilewithnoextension -> http://domain.com

【问题讨论】:

【参考方案1】:

我发现不使用正则表达式更简单。

var removeLastPart = function(url) 
    var lastSlashIndex = url.lastIndexOf("/");
    if (lastSlashIndex > url.indexOf("/") + 1)  // if not in http://
        return url.substr(0, lastSlashIndex); // cut it off
     else 
        return url;
    

示例结果:

removeLastPart("http://google.com/")        == "http://google.com"
removeLastPart("http://google.com")         == "http://google.com"
removeLastPart("http://google.com/foo")     == "http://google.com"
removeLastPart("http://google.com/foo/")    == "http://google.com/foo"
removeLastPart("http://google.com/foo/bar") == "http://google.com/foo"

【讨论】:

【参考方案2】:

我利用了 DOM 中的 htmlAnchorElement

function returnLastPathSegment(url) 
   var a = document.createElement('a');
   a.href = url;

    if ( ! a.pathname) 
        return url;
    

    a.pathname = a.pathname.replace(/\/[^\/]+$/, '');
    return a.href;

jsFiddle.

【讨论】:

请注意,Internet Explorer 似乎不包含前导斜杠,因此您必须考虑到这一点。 @musicfreak 这似乎并没有影响它(除非我做错了什么)。 jsFiddle. 不不,你没有做错任何事,我只是在做笔记,以防有人想把这个想法改编成其他事情。很抱歉造成误解。

以上是关于Javascript Regex 摆脱 URL 的最后一部分 - 在最后一个斜杠之后的主要内容,如果未能解决你的问题,请参考以下文章

javascript url #regex

javascript url #regex

使用正则表达式(regex)替换jQuery / JavaScript中的选定文本

Javascript Regex 检查 URL 是不是包含一个单词并且不包含另一个单词

在 JavaScript 中,除了 URL 之外,是不是有类似 glob 的东西?

纯js 原生JavaScript获取域名主机