为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式括号嵌套匹配

正则表达式括号嵌套匹配

扬帆大鱼 2019-04-21 20:14:58
比如说这一个式子(1+2)(1+(1+2)),我想拿到里面的"1+2"和"1+(1+2)",怎么做?当左边括号里和右边括号里的括号数量无限多(都是成对的括号),我也要取到左边括号和右边括号里的字符串。
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

//这个正则假设字符串最外层包含&只包含左右两对括号
//除此之外没有其他内容(两对括号里面可以有任意内容,包括括号)
varreg=/^\(([^()]*(\(.*\))*[^()]*)*\)\(([^()]*(\(.*\))*[^()]*)*\)$/;
//test1
vars='(1+2)(1+(1+2))';
varmatch=s.match(reg);
console.log(match[1]);//1+2
console.log(match[3]);//1+(1+2)
//test2
s='(1+2)((1+2)(3+4))';
match=s.match(reg);
console.log(match[1]);//1+2
console.log(match[3]);//(1+2)(3+4)
                            
查看完整回答
反对 回复 2019-04-21
?
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);
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 289 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号