Javascript String.match仅返回第一个匹配,即使带有g标志
我试图用正则表达式解决一个二进制间隙问题,但在使它工作时遇到了一些问题 如果我尝试这样的方法:Javascript String.match仅返回第一个匹配,即使带有g标志,javascript,regex,Javascript,Regex,我试图用正则表达式解决一个二进制间隙问题,但在使它工作时遇到了一些问题 如果我尝试这样的方法: Number(101001000).toString()匹配(/(1[0]+1)/g) 当我期待[“101”,“1001”]时,它只返回[“101”] 我是做错了什么,还是仅仅用regex无法达到这个结果? 函数二进制间隙(binStr){ 返回( 宾斯特 .分割(“1”) .减少((acc、cv、idx、arr)=>{ if(idx&&idx可以仅使用regex执行此操作,但不匹配终止1,因为它可
Number(101001000).toString()匹配(/(1[0]+1)/g)
当我期待[“101”,“1001”]
时,它只返回[“101”]
我是做错了什么,还是仅仅用regex无法达到这个结果?
函数二进制间隙(binStr){
返回(
宾斯特
.分割(“1”)
.减少((acc、cv、idx、arr)=>{
if(idx&&idx可以仅使用regex执行此操作,但不匹配终止1,因为它可能需要成为下一个匹配的一部分
相反,只需要在比赛结束后有一个1,而不需要实际抓住它
如果在输出中仍要包含终止1,则只需相应地映射匹配结果即可:
console.log(
(101001000).toString()匹配(/10+(?=1)/g).map(m=>m+“1”)
)
您的匹配项重叠。另请参见: