从JavaScript中的输入字符串验证数学或算术表达式

时间:2018-07-16 20:30:11

标签: javascript parsing

我需要一种使用JavaScript或TypeScript从表单输入中验证数学或算术表达式的解决方案。验证器应允许sudo -u pi python3 script.py()+-*/avg(),{ {1}}。

我正在寻找一个验证器,而不是数学评估器。例如,输入可以是
min()

2 个答案:

答案 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,它会验证并使用变量运行算术表达式。您可以使用不同的签名定义自己的功能。