佚名通过本文主要向大家介绍了正则表达式匹配括号,正则表达式匹配大括号,正则表达式匹配小括号,正则表达式匹配中括号,正则表达式括号等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:正则表达式括号嵌套匹配
描述:
解决方案1:
描述:
比如说这一个式子(1 + 2)(1 + (1 + 2)),我想拿到里面的"1 + 2" 和 "1 + (1 + 2)",怎么做?
当左边括号里和右边括号里的括号数量无限多(都是成对的括号),我也要取到左边括号和右边括号里的字符串。
解决方案1:
var str = '(1+2)(1+(1+2))',
i = -1,
len = str.length,
stack = 0,
start = 0,
result = [];
while (++i < len) {
var c = str.charAt(i);
if (c === '(') {
if (stack === 0) {
start = i;
}
stack++;
} else if (c === ')') {
stack--;
if (stack === 0) {
result.push(str.substring(start, i + 1));
}
}
}
console.log(result);
解决方案2:// 这个正则假设字符串最外层包含&只包含左右两对括号
// 除此之外没有其他内容(两对括号里面可以有任意内容,包括括号)
var reg = /^\(([^()]*(\(.*\))*[^()]*)*\)\(([^()]*(\(.*\))*[^()]*)*\)$/;
// test1
var s = '(1 + 2)(1 + (1 + 2))';
var match = 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)