JavaScript正则表达式全局标志不';不返回所有发生的事件

JavaScript正则表达式全局标志不';不返回所有发生的事件,javascript,regex,Javascript,Regex,我有一个十进制的二进制表示: 1000010001 我想匹配两端都被1包围的连续零序列,10001 因此,在我的字符串中有两种情况: 100001 10001 但是由于某种原因,matchwithg只返回第一个: '1000010001'.match(/(?:10+1)+/ig) > ["100001"] 为什么不能两者兼而有之?如何使其返回所有匹配项?匹配项使用字符,因此在第一次匹配后,字符串变为0001,因此不再匹配模式;您可以将模式中的第二个1转换为不使用字符的先行断言,然后将

我有一个十进制的二进制表示:

1000010001
我想匹配两端都被1包围的连续零序列,
10001

因此,在我的字符串中有两种情况:

100001
10001
但是由于某种原因,
match
with
g
只返回第一个:

'1000010001'.match(/(?:10+1)+/ig)
> ["100001"]

为什么不能两者兼而有之?如何使其返回所有匹配项?

匹配项使用字符,因此在第一次匹配后,字符串变为
0001
,因此不再匹配模式;您可以将模式中的第二个
1
转换为不使用字符的先行断言,然后将
1
添加到以后的每个匹配中:

var s='100001001';
console.log(
s、 匹配(/10+(?=1)/g).map(x=>x+'1')

)
第一个匹配“消耗”第二个
1
数字。如果在循环中进行匹配,则可以在每次匹配后备份1个正则表达式。在某个地方有一个重复。我在找。。。。底线是:当
100001
匹配时,字符串中剩下的是
0001
,因此对其余部分应用正则表达式将不匹配。