Javascript 正则表达式从URL提取ID

Javascript 正则表达式从URL提取ID,javascript,regex,Javascript,Regex,我有这样的urldomain.com/news-343dds-this-is-test 我想提取新闻id343dds, 所以我试着用正则表达式 这是我使用的正则表达式/news-(.+)-/ 但是结果是这样的343dds这是。我只想得到343dds这个(.+)是贪婪的,并且匹配其余的输入。将其更改为(.+?),使其不贪婪 这个(.+)是贪婪的,并且匹配其余的输入。将其更改为(.+?),使其不贪婪 Jeremy Hanlon的解决方案显然有效,但不是最推荐的方案 你最好使用([^-]+) 即使在像

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

我想提取新闻id
343dds
, 所以我试着用正则表达式

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


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

这个
(.+)
是贪婪的,并且匹配其余的输入。将其更改为
(.+?)
,使其不贪婪

这个
(.+)
是贪婪的,并且匹配其余的输入。将其更改为
(.+?)
,使其不贪婪

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

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

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

例如:

  • (.+?)
    对于给定的
    343dds
  • (.+?)
    对于像
    这样的长键,这是一个非常长的键
  • ([^-]+)
    仅适用于任何键

    • 杰里米·汉隆的解决方案显然有效,但不是最推荐的方案

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

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

      例如:

      • (.+?)
        对于给定的
        343dds
      • (.+?)
        对于像
        这样的长键,这是一个非常长的键
      • ([^-]+)
        仅适用于任何键

      • 这是一个很好的答案。但是这些步骤是如何计算的呢?@mkHun上面的“here”链接给出了详细的答案。短字符是(使用
        (.+?)
        ):1)引擎发现“news-”之后的第一个字符与
        +
        匹配,但第二个字符与
        -
        不匹配(这是一个步骤);2) 然后返回,发现第一个和第二个字符匹配
        +
        ,但第三个字符不匹配
        -
        (这是一步);3) 然后它又回来了。。。依此类推,直到第1到第n个字符匹配
        +
        ,第n+1个字符匹配
        -
        。因此,它需要与搜索字符串部分的大小一样多的步骤!是的,这是一个很好的答案。但是这些步骤是如何计算的呢?@mkHun上面的“here”链接给出了详细的答案。短字符是(使用
        (.+?)
        ):1)引擎发现“news-”之后的第一个字符与
        +
        匹配,但第二个字符与
        -
        不匹配(这是一个步骤);2) 然后返回,发现第一个和第二个字符匹配
        +
        ,但第三个字符不匹配
        -
        (这是一步);3) 然后它又回来了。。。依此类推,直到第1到第n个字符匹配
        +
        ,第n+1个字符匹配
        -
        。因此,它需要与搜索字符串部分的大小一样多的步骤!