【问题标题】:Get ID from url string从 url 字符串中获取 ID
【发布时间】:2016-11-11 08:51:00
【问题描述】:

从 URL 获取 ID 的最安全方法是什么,如下所示:

http://www.website.abc.net/fixed/27386323

所以我会尝试拆分字符串并取最后一部分:

var parts = url.split("/");
var id = parts[parts.length - 1];

如果用户键入以下内容,它也可以工作:

www.website.abc.net/fixed/27386323

但如果 URL 是(最后一个斜杠),它就行不通

http://www.website.abc.net/fixed/27386323/

那么正则表达式会更好吗?还是应该使用 JQuery?

【问题讨论】:

  • 只检查最后一个元素是否为空,并使用倒数第二个元素。

标签: javascript jquery regex url


【解决方案1】:

您还可以对.match 使用正则表达式:

([^\/]+)\/?$

并抓住捕获的第 1 组。 /?$ 在这个正则表达式中使斜杠可选。

RegEx Demo

【讨论】:

  • 是否也可以检查正确的域和“固定”参数?所以这个www.another-website.net/fixed/27386323会给我一个错误......并且:结果必须是一个数字,而不是任何其他字符串......
  • 当然你可以使用这个正则表达式www\.website\.abc\.net\/fixed\/.*\b(\d+)\/?$。让我知道这是否有效,然后我可以更新答案
【解决方案2】:

您可以像这样简单地修剪任何尾部斜杠:

if(url.substr(-1) === "/") {
    url = url.substr(0, str.length - 1);
}

然后检查 id。

var parts = url.split("/");
var id = parts[parts.length - 1];

【讨论】:

    【解决方案3】:

    您可以删除网址末尾的任何尾随斜杠,然后使用您当前正在执行的相同方法。这样,它可以在两种情况下(带或不带斜线)都有效。

    var url = 'http://www.website.abc.net/fixed/27386323/';
    var url2 = url.replace(/\/$/, ""); // remove any trailing slash at the end
    alert(url2.split('/')[url2.split("/").length -1]); // gives the desired id
    

    例如:https://jsfiddle.net/879moj9m/1/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-19
      • 2016-08-31
      • 2017-10-12
      • 2023-04-04
      • 2015-11-02
      • 1970-01-01
      • 2011-11-17
      • 1970-01-01
      相关资源
      最近更新 更多