我有小数的二进制表示:
1000010001
我想匹配一系列连续的零,该零在两端都包围着10001
。
所以在我的字符串中有两个这样的情况:
100001
10001
,但由于某种原因,g
的match
仅返回第一个:
'1000010001'.match(/(?:10+1)+/ig)
> ["100001"]
为什么不呢?如何使其返回所有发生?
匹配的消耗字符,因此在第一匹匹配后,字符串变为 0001
,因此不再匹配模式;您可以将模式中的第二个1
变成A 向前看 不消耗字符的断言,然后稍后将1
添加到每个匹配中:
var s = '1000010001';
console.log(
s.match(/10+(?=1)/g).map(x => x + '1')
)