我有文本框和用户编写公式,我从文本框中获取文本以拆分括号。通过我不试图计算公式的方式我尝试只是获取字符串。我试图从嵌套中获取字符串括号这是我的代码:
var txt = "((a-b)/month)/(c+d)";
var reg = /^\((.+)\)$/;
var newTxt = txt.split('(');
for (var i = 1; i < newTxt.length; i++) {
var value = newTxt[i].split(')')[0];
if (value == "") {
value = txt.match(reg)[1];
}
console.log(value);
}
我的输出是
(a-b)/month)/(c+d
a-b
c+d
但我正试图在括号之间加上字符串,如
(a-b)/month
a-b
c+d
答案 0 :(得分:2)
这将捕获外括号中的文本,包括括号本身:
(\((?>[^()]+|(?1))*\))
输出:
((a-b)/month)
(c+d)
说明:
(
首先开始捕获群组\(
左括号(?>
回头看看...... [^()]+
...没有括号...... |
......或那...... (?1)
...这个表达式已经捕获了一个嵌套组(递归)\)
右括号)
结束捕获小组阿。抱歉。您的问题是关于JavaScript和JavaScript不支持后视。
答案 1 :(得分:2)
这是另一种方式
var a = [], r = [];
var txt = "(((a-b)+(f-g))/month)/(c+d)";
for(var i=0; i < txt.length; i++){
if(txt.charAt(i) == '('){
a.push(i);
}
if(txt.charAt(i) == ')'){
r.push(txt.substring(a.pop()+1,i));
}
}
alert(r);