参见英文答案 >
How can I match overlapping strings with regex?6个
如果我运行这个:
如果我运行这个:
'121'.match(/[0-9]{2}/gi)
我得到一个结果的数组:
['12']
即使它们重叠,我怎样才能让它返回所有结果?我希望结果如下:
['12','21']
编辑:或者更好的例子是:
'1234567'.match(...);
应该给我一个数组
[12,
23,
34,
45,
56,
67]
这不会以你想要的方式工作.
当您指定pattern [0-9] {2}时,match()会查找第一次出现的两位数字,然后继续从该位置搜索.由于字符串长度为3,显然它不会找到另一个匹配.
您应该使用不同的算法来查找所有两位数字.我建议你使用你的第一场比赛的组合,再做一次跟随正则表达式
/ [0-9]([0-9] {2})/并组合第一次和第二次运行的集合.