.NET регулярное выражение десятичных чисел - PullRequest
2 голосов
/ 05 марта 2010

Я должен подтвердить, используя десятичное число в регулярном выражении от 00.00 до 35.35 со следующими простыми предположениями (я использую C #).

1) начальные нули не требуются (необязательно). 2) Всегда требуется 2 десятичных знака.

Другими словами, это должно быть десятичное число в диапазоне с 2 десятичными точками.

Примеры допустимых чисел: 0,00, 00,00, 0,67, 2,89 и должен потерпеть неудачу на этих числах: 8,9999 (4 знака после запятой), 65,00 (вне диапазона)

Мне не составило труда проверить 2 знака после запятой, но я не знаю, как определить диапазон? Это то, что даже можно сделать с помощью регулярных выражений?

Ответы [ 3 ]

4 голосов
/ 05 марта 2010

Серьезно. Используйте RegEx, чтобы проверить, что ввод соответствует ^\d{1,2}\.\d{2}$, затем преобразовать его в число и проверить 0 <= x && x <= 35.35. RegEx не предназначен для калькулятора.


Если вы настаиваете:

^(?:(?:[012]?\d|3[0-4])\.\d{2}|35\.(?:[012]\d|3[0-5]))$
2 голосов
/ 05 марта 2010

Я бы использовал Decimal.TryParse . E.g.:

    private const decimal min = 0.0M;
    private const decimal max = 35.35M;
    static bool inRange(string s)
    {
        Decimal d = new Decimal();
        if (Decimal.TryParse(s, out d))
        {
            return d > min && d < max;
        }
        else
            return false;
    }
0 голосов
/ 05 марта 2010

Попробуйте это регулярное выражение:

^(0?\d|[12]\d|3[0-4])?\.\d\d$|^35\.([02]\d|3[05])$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...