重复组regex url path,node.js

时间:2014-03-24 01:23:18

标签: regex node.js express

我正在尝试使用正则表达式提取明确的路由命名参数。

所以,例如:

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

我正在尝试这个正则表达式:

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

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

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

2 个答案:

答案 0 :(得分:1)

第一个问题是.*greedy,因此会绕过所有匹配,直到找到最后一个匹配。这意味着绕过了第一个:var

但是,当您搜索variable number of capture groups时(感谢@MichaelTang),我建议按顺序使用两个正则表达式。首先,使用

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

检测哪些行包含冒号元素 ...

Regular expression visualization

Debuggex Demo

...然后重复搜索该行,只需

\/:(\w+)

这会将文本后冒号放入捕获组1中。

Regular expression visualization

Debuggex Demo

答案 1 :(得分:1)

以下是如何匹配它们的方法:

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