繁体   English   中英

javascript正则表达式问题

[英]javascript Regular Expressions Issue

我确实在正则表达式中需要一些帮助,我正在处理类似

var x = 0;

function doMath(myVar){

RE = //; // here is the problem 
if(RE.test(myVar))
  eval(x+myVar)
else
return false;

}

我希望RE匹配可以添加到该数字的任何数学方程式

EXAMPLE 
+10+20+30 //accepted
**10 //rejected
-10- // rejected
10 // rejected
%10 //accepted
*(10+10)-10 //accepted

请帮我

}

仅对有效字符进行测试(以防止注入一些代码),然后尝试对其进行“评估”怎么样?

function doMath(myVar){
    if (/^[0-9()%*\/+-]+$/.test(myVar)){
        try{
             return eval(myVar);
        }catch(e){}
    }
    return false;
}

如注释中所述,算术方程不是正则的,所以不要使用正则表达式来处理它们。

为算术表达式编写上下文无关的语法 ,并使用解析器生成器(如Jison)从您的给定语法在javascript中生成解析器。

用于数学表达式的CFG示例

在“ Jison”页面上,向下滚动到“指定语言”部分 该部分提供了一种语法分析语法表达式。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM