Регулярное выражение для проверки математического выражения - PullRequest
0 голосов
/ 06 февраля 2019

Я имел дело с регулярными выражениями, этот вопрос возник.Как написать регулярное выражение для тестов математических выражений.Я имею в виду выражение вроде этого:

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

и что-то в этом роде.

Я пытаюсь что-то вроде этого:

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

Но так не передается вариант с скобками.Как сделать регулярное выражение, пропустившее оба варианта, которые я описал выше?Мне нужно регулярное выражение, чтобы пропустить числа, скобки и основные математические операции + - * / и пробелы

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете использовать следующее:

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

Попробуйте здесь

(?:\d+|\(\d+\s*[-+/*]\s*\d+\)) - это одно число или операция в скобках.Это сопоставляется, по крайней мере, один раз, затем следует столько случаев, разделенных оператором, сколько необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...