重复组正则expression式的urlpath,node.js

我正在试图提取正则expression式与正则expression式参数。

所以,例如:

www.test.com/something/:var/else/:var2 

我正在尝试使用这个正则expression式:

 .*\/?([:]+\w+)+ 

但我只得到最后匹配的组。

有谁知道如何匹配两个:var:var2

第一个问题是: .*是贪婪的 ,因此会绕过所有的匹配,直到find最后一个。 这意味着第一个:var被绕过。

然而,当你正在search可变数量的捕获组时 (感谢@MichaelTang),我推荐使用两个正则expression式。 首先,使用

 ^(?:.*?\/?\:\w+)+$ 

检测哪些行包含冒号元素

正则表达式可视化

Debuggex演示

…然后重复search该行,只需简单地

 \/:(\w+) 

这将文本后冒号放置到捕获组1中。

正则表达式可视化

Debuggex演示

以下是你可以如何匹配他们两个:

 www.test.com/something/:var/else/:var2'.match(/\:(\w+)/g) 
 [":var", ":var2"]