обязательное и регулярное выражение для типа данных float - PullRequest
1 голос
/ 16 ноября 2009

Я хочу проверить поле с типом данных float в базе данных. Скажите, пожалуйста, необходимое выражение и регулярное выражение для типа данных float, чтобы пользователь мог вводить только цифры в float.

например, это дает ошибку

else if(!Regex.IsMatch(lowerlimit, 
        @"[+-]?(?:(?:\d+\.\d*)|(?:\d*\.\d+))"))
{
    ModelState.AddModelError("lowerlimit", "Please enter valid lower limit");
}

Спасибо Ritz

Ответы [ 3 ]

1 голос
/ 16 ноября 2009
[+\-]?(?:(?:\d+(\.\d*)?)|(?:\d*\.\d+))

Вы можете отбросить не захватывающие теги ?:, если хотите сделать их более читабельными.

[+\-]?((\d+(\.\d+)?)|(\d*\.\d+))

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

0 голосов
/ 16 ноября 2009

1-й: похоже, что вы попали в общую ловушку: у вас была одна проблема, вы решили ее решить с помощью регулярных выражений, и теперь у вас есть две проблемы.
Вы должны увидеть, можете ли вы использовать свою стандартную библиотеку, чтобы попытаться разобрать предполагаемый float в float, чтобы избежать необходимости возиться с приблизительными регулярными выражениями.

Зависит от того, какие стили текстового представления чисел с плавающей запятой вы хотите разрешить.

Научная запись:

[-+]?\d(\.\d+)?([eE]-?\d+)?

Простой десятичный знак:

-?\d+(\.\d+)?

Разрешить пустую целую часть:

[-+]?((\d*\.\d+)|(\d+(\.\d+)?))
0 голосов
/ 16 ноября 2009

Попробуйте что-то вроде этого:

^\d*\.?\d*$

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