Javascript 嵌套括号逐个获取字符串
我让textbox和用户编写了一个公式,我从textbox中获取文本以拆分括号。顺便说一句,我没有尝试计算公式,我只是尝试获取字符串。我尝试从嵌套的括号中获取字符串。以下是我的代码:Javascript 嵌套括号逐个获取字符串,javascript,jquery,Javascript,Jquery,我让textbox和用户编写了一个公式,我从textbox中获取文本以拆分括号。顺便说一句,我没有尝试计算公式,我只是尝试获取字符串。我尝试从嵌套的括号中获取字符串。以下是我的代码: 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].s
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
a-b
c+d
这将捕获外括号中的文本,包括括号本身:
(\((?>[^()]+|(?1))*\))
输出:
((a-b)/month)
(c+d)
说明:
启动第一个捕获组(
左括号\(
向后看以检查(?>
…没有括号[^()]+
…或者|
…有一个嵌套组已被此表达式捕获(递归)(?1)
右括号\)
捕获组结束)
啊。对不起。您的问题是关于JavaScript的,JavaScript不支持向后看。这将捕获外括号中的文本,包括括号本身:
(\((?>[^()]+|(?1))*\))
输出:
((a-b)/month)
(c+d)
说明:
启动第一个捕获组(
左括号\(
向后看以检查(?>
…没有括号[^()]+
…或者|
…有一个嵌套组已被此表达式捕获(递归)(?1)
右括号\)
捕获组结束)
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);
var a=[],r=[];
var txt=“((a-b)+(f-g))/月/(c+d)”;
对于(变量i=0;i
这是另一种方式
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);
var a=[],r=[];
var txt=“((a-b)+(f-g))/月/(c+d)”;
对于(变量i=0;i 我会考虑使用表达式解析器,从长远来看要容易得多。我是指嵌套括号((…))。考虑这样的字符串((a+b)/c),第一个字符串是(a+b)/c。第二个是(a+b),我会考虑使用表达式解析器,从长远来看要容易得多。我是嵌套括号((…))。考虑一个这样的字符串((a+b)/c),第一个字符串是(a+b)/c,第二个是(a+b),这就是我所说的。谢谢。