比如说这一个式子(1+2)(1+(1+2)),我想拿到里面的"1+2"和"1+(1+2)",怎么做?当左边括号里和右边括号里的括号数量无限多(都是成对的括号),我也要取到左边括号和右边括号里的字符串。
2 回答

四季花海
TA贡献1811条经验 获得超5个赞
//这个正则假设字符串最外层包含&只包含左右两对括号//除此之外没有其他内容(两对括号里面可以有任意内容,包括括号)varreg=/^\(([^()]*(\(.*\))*[^()]*)*\)\(([^()]*(\(.*\))*[^()]*)*\)$/;//test1vars='(1+2)(1+(1+2))';varmatch=s.match(reg);console.log(match[1]);//1+2console.log(match[3]);//1+(1+2)//test2s='(1+2)((1+2)(3+4))';match=s.match(reg);console.log(match[1]);//1+2console.log(match[3]);//(1+2)(3+4)

GCT1015
TA贡献1827条经验 获得超4个赞
varstr='(1+2)(1+(1+2))',i=-1,len=str.length,stack=0,start=0,result=[];while(++ivarc=str.charAt(i); if(c==='('){if(stack===0){start=i;}stack++;}elseif(c===')'){stack--;if(stack===0){result.push(str.substring(start,i+1));}}}console.log(result);
添加回答
举报
0/150
提交
取消