Javascript 正则表达式从URL提取ID
我有这样的urlJavascript 正则表达式从URL提取ID,javascript,regex,Javascript,Regex,我有这样的urldomain.com/news-343dds-this-is-test 我想提取新闻id343dds, 所以我试着用正则表达式 这是我使用的正则表达式/news-(.+)-/ 但是结果是这样的343dds这是。我只想得到343dds这个(.+)是贪婪的,并且匹配其余的输入。将其更改为(.+?),使其不贪婪 这个(.+)是贪婪的,并且匹配其余的输入。将其更改为(.+?),使其不贪婪 Jeremy Hanlon的解决方案显然有效,但不是最推荐的方案 你最好使用([^-]+) 即使在像
domain.com/news-343dds-this-is-test
我想提取新闻id343dds
,
所以我试着用正则表达式
这是我使用的正则表达式/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个字符匹配-
。因此,它需要与搜索字符串部分的大小一样多的步骤!