我正在尝试使用正则表达式提取明确的路由命名参数。
所以,例如:
www.test.com/something/:var/else/:var2
我正在尝试这个正则表达式:
.*\/?([:]+\w+)+
但我只得到最后一个匹配的小组。
有谁知道如何匹配:var
和:var2
。
答案 0 :(得分:1)
第一个问题是.*
是greedy,因此会绕过所有匹配,直到找到最后一个匹配。这意味着绕过了第一个:var
。
但是,当您搜索variable number of capture groups时(感谢@MichaelTang),我建议按顺序使用两个正则表达式。首先,使用
^(?:.*?\/?\:\w+)+$
检测哪些行包含冒号元素 ...
...然后重复搜索该行,只需
\/:(\w+)
这会将文本后冒号放入捕获组1中。
答案 1 :(得分:1)
以下是如何匹配它们的方法:
www.test.com/something/:var/else/:var2'.match(/\:(\w+)/g)
[":var", ":var2"]