Javascript正则表达式,用于捕获括号之间的所有可能的数学运算
我试图用javascript捕捉字符串中括号之间的数学表达式。我需要捕获只包含数字和数学运算符[0-9]、+、-、*、/、%和小数点的括号。下面的例子说明了我所追求的。我设法接近了期望的结果,但是嵌套的括号总是把我的正则表达式搞砸了,所以我需要帮助!我还需要它的全球视野,而不仅仅是第一次出现 让string=“If(2>1,If(a>100,(-2*(3-5)(8-2)),(1+2),(3(1+2))” 如果可能的话,我想做的是设法转换这个语法 如果(条件、假设、假设) 按照这种语法 如果(条件){iftrue}else{iffalse} 这样就可以通过javascript对其进行评估并在浏览器中预览。到目前为止,我已经完成了,但是如果iftrue或iffalse块包含括号,那么一切都会爆炸!所以我试图在转换语法之前捕获括号并进行计算。任何建议都将不胜感激 我得到的最接近的是这个/[\d()+-*/.]/g,它得到了我想要的,但在这个例子中 (1+2)(11)SDASD(1*(2+3))Javascript正则表达式,用于捕获括号之间的所有可能的数学运算,javascript,regex,Javascript,Regex,我试图用javascript捕捉字符串中括号之间的数学表达式。我需要捕获只包含数字和数学运算符[0-9]、+、-、*、/、%和小数点的括号。下面的例子说明了我所追求的。我设法接近了期望的结果,但是嵌套的括号总是把我的正则表达式搞砸了,所以我需要帮助!我还需要它的全球视野,而不仅仅是第一次出现 让string=“If(2>1,If(a>100,(-2*(3-5)(8-2)),(1+2),(3(1+2))” 如果可能的话,我想做的是设法转换这个语法 如果(条件、假设、假设) 按照这种语法 如果(条件
您当前的regex
/[\d()+-*/.]/g
将匹配类中的单个字符,而不是取消(1)
但由于g标志多次出现,这就是(1和1)仍然匹配的原因
in(1<1)
根据您的模式要求,我将其更改为/\([-+*/%.0-9()]+\)/g
。
这将匹配包含您在其中描述的一个或多个字符的括号
注意,您当前的模式在类中的某个地方有一个<代码> ->代码>,这可能导致怪异行为,因为一些正则表达式引擎将把类内的“代码>+**/COD>”作为一个范围(加上星号,这是一个严重的范围)。请注意,我在新模式中将
-
放在类的开头,以便它与实际的-
匹配
我假设没有空括号(),如果有空括号,您可以将+
(一个或多个)在]
之后更改为*
(零个或多个)
仍然添加了g标志,因此您可以匹配每一个这样的表达式
我不能百分之百肯定地说,新的正则表达式将允许您有力地转换您所声明的语法,因为它取决于“iftrue”和“iffalse”代码块的复杂性。看看您是否可以使它与新模式一起工作,否则您可能需要寻找其他解析代码的解决方案。您可以添加最小的工作代码吗我发现的一个弱点是在这个例子中(5*(1+2)-5*(1)
if(5>10) {
2
} else {
2*(5+4)
}
Call function in if parenthesis and all conditions in that function.
if(test()){
// if code
}else{
// else code
}
function test(){
// check both cases here
if(case 1 && case 2){
return true
}
return false;
}