javascript正则表达式问题

时间:2010-03-11 01:15:09

标签: javascript regex

我在正则表达式中真的需要一些帮助,我正在开发像

这样的函数
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

请帮帮我

}

2 个答案:

答案 0 :(得分:1)

如何对有效字符进行测试(以防止某些代码注入),然后尝试“eval”-ing it?

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

答案 1 :(得分:0)

如评论中所提到的,算术方程不常规,所以不要使用正则表达式处理它们。

为算术表达式编写Context-free grammar并使用像Jison这样的解析器生成器,它可以从您给定的语法生成javascript中的解析器。

用于数学表达式的示例CFG

Jison页面上向下滚动到“指定语言”部分。该部分提供了一种语法语法来解析算术表达式。希望这会有所帮助。