jQuery获取URL的最后一部分

9

我有一系列页面需要获取按钮的特定代码。我想用jQuery将URL中的代码放入变量中。

例如URL是www.example.com/folder/code/12345/

我想将数字部分放入名为(siteCode)的变量中。

感谢任何答案的提供。

jquery / 伪代码:

var siteCode;

// start function
function imageCode(){
     siteCode // equals number part of URL
     $('.button').attr('src', 'http:www.example.com/images/'+siteCode+'.jpg');
}

5
可能是与https://dev59.com/u2445IYBdhLWcg3wpb4P重复的问题。 - Nick R
5个回答

14
您可以使用以下代码来获取URL的最后一部分。
var value = url.substring(url.lastIndexOf('/') + 1);

1
你意识到 lastIndexOf('/') 函数返回的是 URL/字符串中最后一个字符的位置吗? - David Thomas

11

我建议:

var URI = 'www.example.com/folder/code/12345/',
    parts = URI.split('/'),
    lastPart = parts.pop() == '' ? parts[parts.length - 1] : parts.pop();

JS Fiddle演示.


使用.pop()会让事情变得混乱,因为它是破坏性的并且改变了parts[]数组。如果您的URI没有尾部斜杠,则无法返回'12345',而是返回'code'。使用这个版本更加直观:lastPart = parts[parts.length-1] !== '' ? parts[parts.length-1] : parts[parts.length-2]; - atwixtor

10
var str="url";

str.split("/")[3]

你可以使用 split 方法


3

以下是通常用于实际实现中的提取URL的最佳方法:

在先前给出的答案中存在一些漏洞

1.考虑一下,如果有一个url,例如www.example.com/folder/code/12345(没有'/'斜杠),那么上述代码都不会按预期工作。

2.考虑如果文件夹层次结构增加,例如www.example.com/folder/sub-folder/sub-sub-folder/code/12345

$(function () {
     siteCode = getLastPartOfUrl('www.example.com/folder/code/12345/');
});

var getLastPartOfUrl =function($url) {
    var url = $url;
    var urlsplit = url.split("/");
    var lastpart = urlsplit[urlsplit.length-1];
    if(lastpart==='')
    {
        lastpart = urlsplit[urlsplit.length-2];
    }
    return lastpart;
}

1

还可以尝试使用

var url = "www.example.com/folder/code/12345";
  var checkExt = /\d$/i.test(url);
  if (checkExt) {
      alert("Yup its a numeric");
  } else {
      alert("Nope");
  }

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