我正在尝试这场比赛
'/links/51f5382e7b7993e335000015'.match(/^\/links\/([0-9a-f]{24})$/g)
并得到:
['/links/51f5382e7b7993e335000015']
当我期待时:
['/links/51f5382e7b7993e335000015', '51f5382e7b7993e335000015']
在删除全局标志之前我没有运气,我认为这不会影响我的结果!
移除全局标志后,
'/links/51f5382e7b7993e335000015'.match(/^\/links\/([0-9a-f]{24})$/)
制作:
[ '/links/51f5382e7b7993e335000015',
'51f5382e7b7993e335000015',
index: 0,
input: '/links/51f5382e7b7993e335000015' ]
这很酷,但是阅读我无法弄清楚的文档:
- 为什么第一个表格不起作用
- 为什么全局标志会干扰
()
匹配 - 如何在没有
index
andinput
属性的情况下获得我的预期结果
在JavaScript Regex 和 Submatches上,最佳答案是:
如您所见,如果设置了全局修饰符,则使用 String 的 match() 函数将不会返回捕获的组。
然而,
> 'fofoofooofoooo'.match(/f(o+)/g)
["fo", "foo", "fooo", "foooo"]
似乎可以很好地产生捕获的组。
谢谢你。