javascript:检查表达式是否可计算?

javascript:检查表达式是否可计算?,javascript,eval,Javascript,Eval,我有用户给出的随机表达式(例如:2+3*5,21*+(4)7,*-54+3)。这些表达式可以包含任意数量的操作数或运算符以形成表达式。我需要对这些表达式求值以获得答案。我尝试使用eval()函数求值,但问题是,当将错误的表达式传递给eval()函数时,它会抛出错误并停止程序。我通过 if(eval(exp)) { //Action Expression is evaluatable } else { //expression is not Evaluatable } 但

我有用户给出的随机表达式(例如: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()函数的表达式是否正确吗?

捕获错误:

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

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


或者也许你可以在这里找到答案:

尝试捕捉错误?使用
try
/
catch
,它用于处理抛出的错误
如果
/
else
用于检查布尔条件。为什么OP需要这个而不是简单的
try catch
?谢谢你的回答,它确实解决了我的问题。