【发布时间】:2013-02-05 21:15:14
【问题描述】:
我正在使用 JavaScript 和 PHP 开发一个分布式计算器。计算器应能识别括号,并应根据括号改变计算顺序。所有基本数学运算(*、/、+、-)都具有相同的优先级(与普通优先级不同)。我使用以下正则表达式来获取用户输入并放入一个数组中。此正则表达式适用于正数:
/\d*\.\d+|\d+|[()/*+-]/g
但是,当涉及到 负数 时,它会崩溃,因为我使用递归替换函数将每对括号(和内容)替换为括号内的运算结果。我这样做是因为这是一个分布式计算器,我应该在服务器端执行每个原子操作,然后将结果返回并显示在操作历史记录中。
我想要的只是检测负数(将它们保存为数组中的一个元素)。我认为它应该以这种方式工作:当有两个连续的运算符(它们之间有零个或多个空白字符),并且第二个运算符是减号(-)时,减号应该连接到以下数字(作为数字的符号)。此外,如果第一个数字前面有一个减号,则该符号应与该数字连接。
【问题讨论】:
标签: javascript regex calculator