我需要在Javascript中评估用户输入的算术表达式,例如“ 2 *(3 + 4)”,但eval
出于安全原因,我不想使用它。
我可以去除所有不是数字或运算符的字符,但是我不确定这是否安全,如果用户可以使用,,等功能cos
,那会很好sqrt
。
是否有进行算术表达式评估的Javascript库?
您可以尝试使用JavaScript Expression Evaluator:
该库是Raphael Graf的ActionScript Expression Parser的修改版本。当我编写JavaScript FunctionPlotter时,我想要一个更好的替代方法来使用JavaScript的evalfunction。当前没有安全风险,因为您只能在自己的浏览器中运行代码,但数学上却不太方便(Math.pow(2 ^ x)而不是2 ^ x等)。
那么您的代码将是这样的:
console.info ( Parser.evaluate( "2 * (3 + 4)" ) ); //prints 14
问题内容: 在我们的项目中,我们需要在没有任何数据库服务器的情况下评估SQL语句。您能否建议一个免费的Java库,该库能够评估基于数学的SQL语句并返回结果? 例如; 输入 输出 可能会被称为 问题答案: 如下面的代码所示,可以使用ZQL来实现。但是我严重建议您选择一个简单的嵌入式数据库,例如H2(此处为示例),而应使用它(项目运行状况要高得多)。 使用H2: 输出: 要使用它,请将其添加到您的:
问题内容: 我正在寻找一种相对简单的方法(与编写解析器相比)来评估Java中的布尔表达式,并且我不想使用JEP库。 我有一个String表达式,例如:我的目标是用值替换变量。 有没有一种方法可以评估此表达式? 请记住,这可以是任何深度,因此编写解析器将非常复杂。 问题答案: 您可以使用Java6中的脚本引擎,并选择任何流行的脚本语言,例如Scala,Ruby,Python,Groovy和Jav
本文向大家介绍Java评估算术字符串,包括了Java评估算术字符串的使用技巧和注意事项,需要的朋友参考一下 示例
问题内容: 假设我有以下表达式 Eclipse警告我,布尔表达式的第二个短语中可能为空。但是,我知道有些人会在第一个条件失败的情况下完全退出布尔表达式。Java是否正确?还是不能保证评估顺序? 问题答案: 但是,我知道有些人会在第一个条件失败的情况下完全退出布尔表达式。Java是否正确? 是的,这就是所谓的短路评估。操作员喜欢和是执行此类操作的操作员。 还是不能保证评估顺序? 不,可以保证评估的顺
问题内容: 我正在建立一个网站,我需要用户应该能够根据数据库表中的值来评估某些表达式,而不是使用pyparsing等工具,而是考虑使用python本身,并提出了一个解决方案这足以满足我的目的。我基本上是使用eval来评估表达式,并以空传递全局变量dict,这样就无法访问任何内容,而从数据库获取值的局部变量dict ,如果用户需要一些函数,我也可以传递这些函数 所以我的问题是,它将有多安全,我有三个
问题内容: 什么是实现将采用字符串并根据运算符优先级输出结果的python程序的最佳方法(例如:“ 4 + 3 * 5”将输出19)。我在谷歌上寻找解决这个问题的方法,但是它们都太复杂了,我正在寻找一个(相对)简单的方法。 澄清:我需要比eval()稍微先进的东西-我希望能够添加其他运算符(例如,最大运算符-4 $ 2 = 4),或者,我对此在学术上比对专业更感兴趣-我想知道 该怎么 做。 问题答