【问题标题】:Extracting number ID from a URL in Javascript从 Javascript 中的 URL 中提取数字 ID
【发布时间】:2010-07-23 06:31:05
【问题描述】:

与我之前的问题类似:

spliting a string in Javascript

网址现在已更改,唯一编号 ID 不再位于网址末尾,如下所示:

/MarketUpdate/Pricing/9352730/Report

现在我不能使用以前的解决方案,我该如何从中提取数字?

【问题讨论】:

  • 以下任一解决方案都适合您,因此我建议您选择未来不太可能出现故障的解决方案。如果在 url 中遇到 2 个或更多数字,regex 选项将中断,而如果在不同位置遇到数字,则 split 选项将中断(因此,忽略)。
  • @Ioannis Karadimas:更准确地说,正则表达式将匹配斜杠中的第一个数字,即。 e.它与/foo/123/bar/456/baz 中的123 匹配。它不仅匹配 any 数字,因此它适用于 /foo123/bar/456/baz 之类的字符串并匹配 456
  • @Tim Pietzcker:抱歉,我没有正确概述正则表达式的功能。但是,我指的是一般情况下它将匹配 /foo/123/bar/456/ 中的 123。如果所需的唯一编号是 456,我认为问题很明显。这一切都归结为 url 的预期一般形式。

标签: javascript regex string


【解决方案1】:

你可以搜索

/(\d+)/

并使用反向引用号。 1 将包含数字。请注意,这要求数字始终由两边的斜线分隔。如果您还想匹配字符串末尾的数字,请使用

/(\d+)(?:/|$)

在 JavaScript 中:

var myregexp = /\/(\d+)\//;
// var my_other_regexp = /\/(\d+)(?:\/|$)/;
var match = myregexp.exec(subject);
if (match != null) {
    result = match[1];
} else {
    result = "";
}

【讨论】:

    【解决方案2】:

    如果网址总是这样,为什么不使用split()

    var ID = url.split('/')[3];
    

    【讨论】:

    • 我不确定它们会一直这样。不过,它们总是有一个唯一的编号。
    【解决方案3】:
    urlstring = "/MarketUpdate/Pricing/9352730/Report"
    $str = urlstring.split("/");
    alert($str[3]);
    

    这会在每次找到 / 符号时拆分字符串并将其存储到一个数组中,然后您可以使用 $str[0] 获取数组中的每个单词

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多