首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >简单表达式的Javascript解析器

简单表达式的Javascript解析器
EN

Stack Overflow用户
提问于 2009-06-27 09:17:15
回答 5查看 18.3K关注 0票数 5

我想找一个可以处理和计算简单表达式的javascript解析器。解析器应该能够计算正则数学表达式,并支持带参数的自定义函数。它还必须支持字符串处理。字符串连接与||运算符支持是首选的,但如果+可以做到这一点也没问题。

应由解析器处理的表达式示例:

3* (2 + 1) -1

2* func(2,2)

func('hello world',0,5) ||‘你’

有没有人实现了这样的东西,或者我在哪里可以找到类似的东西?

EN

回答 5

Stack Overflow用户

发布于 2009-06-27 10:12:55

我还没有用过它,但在谷歌上快速搜索一下就会发现http://jsfromhell.com/classes/math-parser

编辑

你想要做的事情可能超出了第一个链接,你也可以看看Douglas Crockford的"parser for Simplified JavaScript"

它只是一个解析器,所以你必须自己做所有的计算。然而,它会让它变得更容易,而且它不使用eval。

票数 3
EN

Stack Overflow用户

发布于 2013-04-23 02:53:50

试试math.js:

http://mathjs.org

附带了一个广泛且易于使用的解析器,它还支持变量和函数的赋值和使用,就像在示例表达式中一样。与“原生”JavaScript无缝集成:您可以从解析器范围内获取和设置变量和函数。

您的示例代码将被评估为:

代码语言: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"');

函数也可以在解析器本身中定义(目前只有单行函数):

代码语言:javascript
运行
复制
parser.evaluate('function f(x, y) = x ^ y');
parser.evaluate('f(2, 3)'); // 8
票数 3
EN

Stack Overflow用户

发布于 2009-06-27 09:48:23

假设您指的是javascript中的javascript解析器,您可能需要eval()

请参阅:https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Global_Functions/Eval

只需注意,如果使用不当,eval可能会带来安全风险。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1052470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档