我正在尝试获取最后一次出现的情况。
obj.foo[0].bar[0].name
我尝试了这个代码,但只得到了第一个[0]
,如果我把$
放在最后,那就不起作用了。
[(d+)](?:(?![d+]))
您必须断言另一个相同的组不能在匹配后的某个位置,而不仅仅是紧接着。参见此修改:
[(d+)](?!.*?[d+])
^^^
或者你可以切换到回溯方法:
.*[(d+)]
下面是第一个正则表达式的正则表达式演示,下面是另一个正则表达式演示。
根据是否需要包含括号,可以使用以下内容:
var r = s.match(/[d+]/g)[1]
如果不需要分隔符,可以从组索引中对它们进行切片。
var r = s.match(/[d+]/g)[1].slice(1,-1)