javascript:检查表达式是否可评估?

时间:2015-01-06 17:33:26

标签: javascript eval

我有随机表达,由用户给出(例如:2 + 3 * 5,21 * +(4)7,* - 54 + 3 )。这些表达式可以包含任意数量的操作数或运算符来形成表达式。我需要评估这些表达式以获得答案。我试图使用 eval()函数进行评估,但问题是当错误的表达式是传递给 eval()函数它会抛出一个错误并且程序停止。我试过了

if(eval(exp))
{    
    //Action Expression is evaluatable
}
else
{
    //expression is not Evaluatable
}

但没有奏效并产生错误信息

"SyntaxError: unterminated regular expression literal."  

由于表达方式的多样性和在评估之前,我很难构建检查陈述 你能建议我如何简单地检查传递给eval()函数的表达式是否正确?

2 个答案:

答案 0 :(得分:4)

抓住错误:

try {
        eval(exp); 
    } catch (e) {
        if (e instanceof SyntaxError) {
            alert(e.message);
        }
    }

答案 1 :(得分:-1)

您可以尝试将脚本的内容放入"脚本"动态标记,然后检查错误函数的返回。或者在脚本末尾定义一个变量,并在执行后检查它是否存在。

或者mayber你可以在这里找到答案:https://stackoverflow.com/a/9522483/2007701 !!