如何使用基本运算符检查字符串中的数学表达式
How to check string for mathematical expression with basic operators?
如何检查包含基本数学运算符+-/*和包含字母数字字符的变量的字符串中的语法。此字符串也可以包含方括号((。重要的是要知道它是否完整,这意味着要关闭括号或没有冗余运算符。
例如(1*3(3+2)+test)
有效,但((1++2)
不是。
这在使用regex的Javascript中可能吗?或者我必须制定一个算法吗?如果是的话,有人对此有类似的算法吗?
正则表达式本身不具备解析这类表达式的能力,因为您需要某种堆栈来检查以前匹配的内容。
您需要创建一个简单的解析器来遍历字符串并检查以下内容:
- 如果找到数字/文本,请继续
- 如果你找到一个开口支架,把它推到堆叠处
- 如果找到一个闭合括号,请从堆栈中弹出一个括号(如步骤2所述(。如果缺少左括号,这将导致尝试从空堆栈中弹出,这将引发错误
- 如果找到运算符,请确保下一个字符是左括号或其他数字/文本。这将有助于在两个运算符相互跟随或字符串以运算符结尾的情况下中断
解析器完成后,检查用于跟踪括号的堆栈是否为空。如果它不为空,则表示括号的数量不平衡。
相关文章:
- 将电子邮件验证正则表达式字符串存储在JSON中
- 带有模式的正则表达式字符串
- Javascript if数组包含正则表达式字符串
- 在JSON中指定正则表达式字符串,在JavaScript和PHP中使用
- 从正则表达式文本中获取正则表达式字符串表示的最佳方式
- 正则表达式 - 字符串不能以空格开头,以空格结尾,并且连续包含几个空格
- 正则表达式 - 字符串不应包含超过 7 位数字
- 在 javascript 中将正则表达式字符串转换为正则表达式不同
- 为 STRING 创建一个语法表达式.字符串.PEG上的绳子.js
- Javascript:测试单个字符在正则表达式字符串中找到
- 正则表达式(字符串比较)
- 是否可以生成与正则表达式字符串匹配的字符串
- 正则表达式字符串匹配
- 正则表达式字符串比较忽略符号
- 是否可以使用正则表达式解析正则表达式字符串
- 正则表达式字符串在文档中替换为 JavaScript
- 如何使正则表达式字符串拒绝空白字段
- 拆分正则表达式字符串
- Regex以替换表达式字符串中javascript中的整个单词
- 表示正则表达式字符串表示法