正则表达式测试数学表达式

时间:2019-02-06 15:46:46

标签: regex

我处理正则表达式时,出现了这个问题。如何为数学表达式测试编写正则表达式。我的意思是这样的:

1+1
(1+1) * 2 / (4+1) + 3

像这样的东西。

我尝试这样的事情:

"^(?:\\d+([*+-]|/(?!0)))+\\d+$"

但是不能通过方括号将选项传递出去。如何制作一个跳过上述两个选项的正则表达式?我需要一个正则表达式来跳过数字,括号和基本数学运算+-* /和空格

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

^(?:\d+|\(\d+\s*[-+/*]\s*\d+\))(?:\s*[-+/*]\s*(?:\d+|\(\d+\s*[-+/*]\s*\d+\)))*$

Try it here

(?:\d+|\(\d+\s*[-+/*]\s*\d+\))是一个数字或带括号的操作。至少匹配一次,然后再根据需要由操作员分隔多个事件。