我需要一种使用JavaScript或TypeScript从表单输入中验证数学或算术表达式的解决方案。验证器应允许sudo -u pi python3 script.py
,()
,+
,-
,*
,/
,avg()
,{ {1}}。
我正在寻找一个验证器,而不是数学评估器。例如,输入可以是
min()
。
答案 0 :(得分:0)
看看expression-eval。要安装,请运行以下命令:
npm install expression-eval
然后使用
const expr = require('expression-eval');
const result = expr.parse('((x+y-z)+(min(min(x,y),z)+avg(x,y))')
// This will give an error like
// Error: Unclosed ( at character 35
// at throwError (/home/simon/node_modules/jsep/build/jsep.js:38:16)
// at gobbleGroup (/home/simon/node_modules/jsep/build/jsep.js:521:7)
// at gobbleVariable (/home/simon/node_modules/jsep/build/jsep.js:465:14)
// at gobbleToken (/home/simon/node_modules/jsep/build/jsep.js:295:15)
// at gobbleBinaryExpression (/home/simon/node_modules/jsep/build/jsep.js:203:13)
// at gobbleExpression (/home/simon/node_modules/jsep/build/jsep.js:142:17)
// at Object.jsep [as parse] (/home/simon/node_modules/jsep/build/jsep.js:547:17)
但是,在末尾添加一个括号可以解决此问题:
const result = expr.parse('((x+y-z)+(min(min(x,y),z)+avg(x,y)))')
答案 1 :(得分:0)
检查此插件exp.js,它会验证并使用变量运行算术表达式。您可以使用不同的签名定义自己的功能。