Регулярка для проверки на число :)

245
07 марта 2018, 05:15

считываю строку

строка должна представлять число (int/double)

в качестве разделителя могут присутствовать оба разделителя(./,)

(пример: 123,123 == 123.123)

как проверить строку регулярным выражением, на то, что это число?

Answer 1

Вы не должны пользоваться регулярками для такой проверки. Хотя такая проверка была бы возможна, она будет слишком медленной и слишком сложной, а значит, подверженной ошибкам. Например, не так просто поймать максимальное число, которое всё ещё принадлежит типу double.

Делайте так:

var russianCI = CultureInfo.GetCultureInfo("ru-RU");
if (double.TryParse("123,123", NumberStyles.Float, russianCI, out var v))
    Console.WriteLine(v);
else
    Console.WriteLine("Не число");

Разделитель зависит от выбранного языка (CultureInfo): например, для русского функция будет ожидать число в формате с запятой, а для английского — с точкой.

Answer 2

bool result = Regex.IsMatch(input, "\d+[\.,]?\d*");

Возможно, стоит учесть еще мантиссу и знак перед числом.

READ ALSO
Отправка POST запроса на страницу request payload

Отправка POST запроса на страницу request payload

Мне необходимо реализовать авторегистрицию на сайтеВо время регистрации отловил что на сервер уходят вот такие данные :

225
Вывести Title родителя по внешнему ключу

Вывести Title родителя по внешнему ключу

Доброго времени суток! Встал перед проблемой, есть таблица, 4 поля (Id,ParentId,Title,Created,Description) где ParentId является внешним ключом к самому Idшнику,...

232
NUnit Api запуск теста по имени

NUnit Api запуск теста по имени

Не смог найти в документации возможность запуска теста по имениПробовал запускать, используя TestFilter, но желаемого результат не получил

270
Проблема с закрытием окна

Проблема с закрытием окна

В приложении есть notifyIcon с contextmenu на нем, в нем пункты Свернуть и Выход

245