重复组正则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"]