算术表达式的正则表达式

Regular expression for arithmetic expression

我正在尝试编写一个正则表达式来检查给定的字符串是否类似于 a + b, 2 + a + b, 3 + 6 * 9 + 6 * 5 + a * b, 等等...

只有 + 和 * 运算符。

我试过了

if (str.matches("(\d|\w \+|\*){1,} \d|\w"))

不幸的是它只处理像 3 * 7 ... (numeric * numeric) 这样的情况。

等待您的回答,感谢阅读。

*+放在字符class内。

str.matches("\w(?:\s[+*]\s\w)+");

DEMO

这将处理简单和链式计算的情况

[0-9A-Za-a]*( ){0,}([+-/*]( ){0,}[0-9A-Za-a]*( ){0,})*

这会匹配,例如

  • 1+2
  • 1 + 2
  • 1 + a * 14 / 9

(您可以通过更新 [+-/*] 来更改您想要的运算符)