我有一个小数的二进制表示法:
1000010001
我希望匹配由两端的10001
包围的连续零序列。
所以在我的字符串中有两个这样的事件:
100001
10001
但出于某些原因,match
g
仅返回第一个:
'1000010001'.match(/(?:10+1)+/ig)
> ["100001"]
为什么不两者兼而有之?如何让它返回所有事件?
答案 0 :(得分:2)
匹配消耗字符,因此在第一次匹配后,字符串变为0001
,因此不再匹配模式;您可以将模式中的第二个1
转换为预测断言(不消耗字符),然后在每个匹配后添加1
:
var s = '1000010001';
console.log(
s.match(/10+(?=1)/g).map(x => x + '1')
)