Проверять математические выражения с помощью регулярных выражений?

Я хочу проверить математические выражения с помощью регулярного выражения. Математическое выражение может быть таким

  1. он может быть пустым означает, что ничего не вводится

  2. если указано, он всегда будет начинаться с оператора + или - или * или / и всегда будет следовать число, которое может иметь любое количество цифр и число может быть десятичным (содержит . в число) или целое число(без '. символ в число). примеры : *0.9 , +22.36 , - 90 , / 0.36365

  3. за ним может следовать то, что упоминается в пункте 2 (над линией). примеры : *0.9+5 , +22.36*4/56.33 , -90+87.25/22 , /0.36365/4+2.33

пожалуйста, помогите мне.

2 ответов


что-то вроде этого должно работать:

^([-+/*]\d+(\.\d+)?)*

Regexr Demo

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

Если вы хотите отрицательное или положительное выражение, Вы можете написать его так>
^\-?[0-9](([-+/*][0-9]+)?([.,][0-9]+)?)*?$

и
^[(]?[-]?([0-9]+)[)]??([(]?([-+/*]([0-9]))?([.,][0-9]+)?[)]?)*$

со скобками в выражение, но не считать количество вам понадобится Способ для проверки или выражения. // метод

 public static bool IsPairParenthesis(string matrixExpression)
    {
        int numberOfParenthesis = 0;
        foreach (char character in matrixExpression)
        {
            if (character == '(')
            {
                numberOfParenthesis++;
            }
            if (character == ')')
            {
                numberOfParenthesis--;
            }
        }

        if (numberOfParenthesis == 0)
        { return true; }
        return false;
    }