在Javascript中获取URL的最后一部分

4
使用以下URL示例,我该如何从中获取用户名?使用正则表达式解决方案可能很酷。下面的示例仅获取域名: http://www.mysite.com/username_here801
  var url = $(location).attr('href');

  alert(get_domain(url));

  function get_domain(url) {
    return url.match(/http:\/\/.*?\//);
  }

jQuery解决方案也是可以接受的。

4个回答

8
var url = "http://www.mysite.com/username_here801";    
var username = url.match(/username_(.+)/)[1];

为了总是返回在.com后面的斜杠之后的文本,你可以这样做:

http://jsfiddle.net/5LHFd/

var url = "http://www.mysite.com/username_here801";
var urlsplit = url.split("/");
var username = urlsplit[3];

http://jsfiddle.net/5LHFd/2/


K. username_ 只是一个示例,不是模式。我要匹配的模式是在域扩展名 .com 之后第一个斜杠后的任何内容。 - suchislife
@Vini,我回答的第二部分使用split应该适合你。 - Richard Dalton

4

您可以使用 document.location.pathname 访问它。


楼主可能在询问如何从提供的URL中提取最后一部分。 - Salman A

1
如果正则表达式解决方案是可接受的,你可以尝试以下代码:
function get_path(url) {
    // following regex extracts the path from URL
    return url.replace(/^https?:\/\/[^\/]+\//i, "").replace(/\/$/, "");
}

这个正则表达式似乎无法匹配在.com域名后第一个斜杠之后的任何内容。 - suchislife
接近了,但结果显示为/username_here801/而不是username_here801。 - suchislife
是否有一种方法可以匹配而不是添加替换到部分匹配? - suchislife

0
你可以使用 getDomain() 函数来查找路径名的起始位置。
function getUsername(url){
   var position = getDomain(url).length + 1;
   return url.slice(position); 
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接