检查字符串是否是数学表达式?

Asw*_*thy 1 java mathematical-expressions

我试图在Java中编写一个接受字符串作为参数的方法.现在这个字符串可能是一个数学表达式,也可能只是一个普通的字符串.我只有在它是一个数学表达式时才能对它进行评估,如果不是这样的话,我就不管它.我将使用java脚本引擎评估数学表达式,如下所示:

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String foo = "1+2*10";
System.out.println(engine.eval(foo));
Run Code Online (Sandbox Code Playgroud)

但问题是如果我传递一个不是数学表达式的字符串,这会引发异常.我的代码中不需要例外.我想要实现的是这样的:

if(isExpression(foo))
{
engine.eval(foo);
}
Run Code Online (Sandbox Code Playgroud)

这样我在评估它之前检查它是否是数学表达式.是否有一个简单的方法isExpression(foo)实现?可能正在使用一些正则表达式?如果有的话请告诉我.谢谢

use*_*300 6

对于像这样的非常复杂的操作,查看它是否是有效公式的努力几乎与实际进行评估的努力一样多.

我建议你只是尝试评估,并在失败时抛出一个特定于域的异常,比如说一个CannotEvaluateFormulaException,然后抓住它.