MrV*_*doo 1 javascript regex regex-group
我知道还有其他具有相同标题的问题,但我无法在其中找到答案。
我有一个字符串,可能是/action或者/action{key:value}
我正在尝试获取action,key和value变量。
我尝试过几种正则表达式,它们是此正则表达式的变体:
/^\/(.*?)(\{(.*)\:(.*)\})?/
/^\/(.*?)\{(.*)\:(.*)\}/
匹配/action{key:value}但不匹配/action
/^\/(.*)(\{(.*)\:(.*)\})?/(将捕获组声明为可选)匹配/action但不匹配/action{key:value}(它捕获所有内容)
因此,如果我将第一组声明为惰性组:
/^\/(.*?)(\{(.*)\:(.*)\})?/它不再匹配任何东西了。
我知道我已经接近解决方案,但我肯定误解了一些基本的东西:)
将整个{...}部分放入可选的非捕获组中,同时保持第一组惰性:
^\/(.*?)(?:{(.*)\:(.*)})?$
^^^ ^
Run Code Online (Sandbox Code Playgroud)
https://regex101.com/r/S4DAy3/1
或者使用负字符集,不包括{s:
^\/([^{]+)(?:{(.*)\:(.*)})?$
Run Code Online (Sandbox Code Playgroud)