javascript - 评估在 JavaScript 中给出 bool 表达式的字符串

标签 javascript eval boolean-logic

我有一个包含 bool 逻辑的字符串,例如:

var test = "(true)&&(false)&&!(true||true)"

在这种情况下,在 JavaScript 中评估此字符串以获得 bool 值 false 的好方法是什么

  1. 我知道我们可以使用 eval() 或 new Function().. - 但这是一种安全的方法吗?
  2. 我猜另一个选择是编写自定义解析器。作为一个刚接触 JS 的人,这需要付出很多努力吗?我找不到 bool 逻辑表达式解析器的任何示例
  3. 还有其他选择吗?

最佳答案

只要你能保证安全,我觉得你可以用eval。

也许在进行评估之前对其进行处理?

var test = "(true)&&(false)&&!(true||true)" 

var safe = test.replace(/true/ig, "1").replace(/false/ig, "0");

var match = safe.match(/[0-9&!|()]*/ig);

if(match) {
   var result = !!eval(match[0]);
}

关于javascript - 评估在 JavaScript 中给出 bool 表达式的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36348452/

相关文章:

javascript - 在 Angular 中使用 Javascript 库

bash - 在 bash 脚本中实现试运行

vba - MS Access : eval() returns NULL when accessing . 列(x,y)属性

python - 用于列表反序列化的 Python 'eval' 的安全性

java - 编码Bat : LoneSum optimization

algorithm - 是否有一种有效的算法可以找到哪些 boolean 函数的组合与给定 boolean 函数的输出相匹配?

c# - 确定变量是否等于 'list' 值中的值的最简洁方法

javascript - 从 javascript 对象中删除不需要的属性

javascript - $scope 有选择地更新服务解析

javascript - css3 rotateX 创建一条线