Javascript 正则表达式在生产中不匹配字符串,但在tester上工作

Javascript 正则表达式在生产中不匹配字符串,但在tester上工作,javascript,regex,Javascript,Regex,我有以下字符串:/v0/lifts/0626df905120f6d6/refs/8f23576e6838b528。我试图获取第三个URL字符串,因此编写了以下正则表达式:/([^/]*)\w+/g。根据Regexr的说法,这应该是正确的 然后,我尝试使用Javascript访问第三个数组元素: var key = /([^/]*)\w+/g.exec('/v0/lifts/0626df905120f6d6/refs/8f23576e6838b528')[2]; 然而,这是未定义的。如果打印结果

我有以下字符串:
/v0/lifts/0626df905120f6d6/refs/8f23576e6838b528
。我试图获取第三个URL字符串,因此编写了以下正则表达式:
/([^/]*)\w+/g
。根据Regexr的说法,这应该是正确的

然后,我尝试使用Javascript访问第三个数组元素:

var key = /([^/]*)\w+/g.exec('/v0/lifts/0626df905120f6d6/refs/8f23576e6838b528')[2];
然而,这是未定义的。如果打印结果(作为JSON),则会得到
[“v0”,“v”]


有什么问题吗?

第一个问题是在工作中使用了错误的工具

只要在
/
上拆分,就不需要正则表达式了

'/v0/lifts/0626df905120f6d6/refs/8f23576e6838b528'.split('/')[3]; //0626df905120f6d6
现在,如果确实要使用正则表达式,请改用
match

'/v0/lifts/0626df905120f6d6/refs/8f23576e6838b528'.match(/([^/]*)\w+/g) //["v0", "lifts", "0626df905120f6d6", "refs", "8f23576e6838b528"]

exec
仅在每次匹配有多个捕获组时才有用。

您必须调用
。exec
三次才能获得第三个匹配:更简单的regexps
/\w+/g
/[^/]+/g
也可以。但是我同意
split
更适合解决这个问题,特别是如果您有空部件(例如/foo//bar/baz)。