【问题标题】:Regex Extract ID From URL正则表达式从 URL 中提取 ID
【发布时间】:2016-04-09 16:02:52
【问题描述】:

我有这样的网址domain.com/news-343dds-this-is-test

我要提取新闻id343dds, 所以我尝试使用正则表达式

这是我使用的正则表达式/news-(.+)-/

但结果是这样的343dds-this-is。我只想得到343dds

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    (.+) 是贪婪的并匹配输入的其余部分。将其更改为(.+?) 使其不贪心。

    【讨论】:

      【解决方案2】:

      Jeremy Hanlon 的解决方案显然有效,但不是最推荐的解决方案。

      你最好使用([^-]+)

      即使在像这个 SO question 这样的简单情况下可能无关紧要,惰性量词 +? 也有不便之处,即步数与搜索部分的大小成正比,因此它可能会广泛影响性能.
      这个解释清楚了here

      例子:

      【讨论】:

      • 是的,这是一个很好的答案。但是步数是怎么计算的呢?
      • @mkHun 上面的“这里”链接给出了长答案。简短的是(带有(.+?)):1)引擎发现“news-”之后的第一个字符匹配.+,但第二个不匹配-(这是一步); 2)然后返回,发现第一个和第二个字符匹配.+但3d不匹配-(这是一步); 3)然后它会返回......依此类推,直到创建第 1 到第 n 个字符匹配 .+ 和 n+1th 匹配 -。所以它需要与搜索到的字符串部分的大小一样多的步骤!
      猜你喜欢
      • 2013-02-24
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多