可能重复:
Javascript中算术表达式的安全评估
我正在尝试构建一个在线计算器,作为我一直在开发的网站的一部分。
我有+ - * / ( ) AVG MIN MAX sine cos etc
作为操作。有数字、运算符和功能按钮。我只是在按下任何按钮时附加一个字符串。
我必须在 UI 端构建一个基本的语法检查器。服务器将实际执行操作并将它们存储并显示。我不想花太多时间编写客户端代码,但我的想法是验证它在数学上是否有意义。
这是我的计划:
我将尝试eval()
生成的字符串并捕获错误。如果错误是 synatxError,则表示该字符串在语法上是错误的。如果是其他类型的错误,我可以接受。
所以我在脚本的开头做了这个:
Error.prototype.dummy_attribute = "notSyntaxError"
SyntaxError.prototype.dummy_attribute = "SyntaxError"
上述方法对我不起作用,因为如果有字符串链接2()
,我会收到类型错误。现在我必须编写一个代码来检查空括号和括号前面没有运算符,或者括号后面没有运算符
或者是否有另一种方法可以用来检查字符串的语法,我必须看看它在数学上是否有意义。