我想找一个可以处理和计算简单表达式的javascript解析器。解析器应该能够计算正则数学表达式,并支持带参数的自定义函数。它还必须支持字符串处理。字符串连接与||运算符支持是首选的,但如果+可以做到这一点也没问题。
应由解析器处理的表达式示例:
3* (2 + 1) -1
2* func(2,2)
func('hello world',0,5) ||‘你’
有没有人实现了这样的东西,或者我在哪里可以找到类似的东西?
发布于 2009-06-27 10:12:55
我还没有用过它,但在谷歌上快速搜索一下就会发现http://jsfromhell.com/classes/math-parser
编辑
你想要做的事情可能超出了第一个链接,你也可以看看Douglas Crockford的"parser for Simplified JavaScript"
它只是一个解析器,所以你必须自己做所有的计算。然而,它会让它变得更容易,而且它不使用eval。
发布于 2013-04-23 02:53:50
试试math.js:
http://mathjs.org
附带了一个广泛且易于使用的解析器,它还支持变量和函数的赋值和使用,就像在示例表达式中一样。与“原生”JavaScript无缝集成:您可以从解析器范围内获取和设置变量和函数。
您的示例代码将被评估为:
var parser = math.parser();
parser.set('func', function () {
// ... do something ...
});
parser.evaluate('3 * (2 + 1) - 1');
parser.evaluate('2 * func(2, 2)');
parser.evaluate('func("hello world", 0, 5) + " you"');函数也可以在解析器本身中定义(目前只有单行函数):
parser.evaluate('function f(x, y) = x ^ y');
parser.evaluate('f(2, 3)'); // 8发布于 2009-06-27 09:48:23
假设您指的是javascript中的javascript解析器,您可能需要eval()
请参阅:https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/Eval
只需注意,如果使用不当,eval可能会带来安全风险。
https://stackoverflow.com/questions/1052470
复制相似问题