JavaScript 正则表达式全局标志不会返回所有出现次数



我有小数的二进制表示:

1000010001

我想匹配一系列连续的零,该零在两端都包围着10001

所以在我的字符串中有两个这样的情况:

100001
10001

,但由于某种原因,gmatch仅返回第一个:

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

为什么不呢?如何使其返回所有发生?

匹配的消耗字符,因此在第一匹匹配后,字符串变为 0001,因此不再匹配模式;您可以将模式中的第二个1变成A 向前看 不消耗字符的断言,然后稍后将1添加到每个匹配中:

var s = '1000010001';
console.log(
  s.match(/10+(?=1)/g).map(x => x + '1')
)

相关内容

  • 没有找到相关文章

最新更新