Регулярное выражение для чисел от -90.0 до +90.0

Что такое регулярное выражение для чисел от -90.0 до +90.0? Цифры между ними могут быть плавающими или целыми числами.

Ответ 1

Я не думаю, что вы хотите использовать Regex для этого. Используйте Double.Parse() (или Double.TryParse()), если ваш данные сохраняются в строке, а затем проверяют полученное значение, чтобы убедиться, что оно попадает в желаемый диапазон. Например:

public bool IsInRange(string value)
{
   bool isInRange = false;

   double parsed = 0;
   if (Double.TryParse(value, out parsed))
   {
      // use >= and <= if you want the range to be from -90.0 to 90.0 inclusive
      isInRange = value > -90.0 && value < 90.0;
   }

   return isInRange;
}

Если ваше значение уже равно double, тогда это еще проще - не требуется синтаксический анализ.

Ответ 2

Не то, чтобы вы действительно хотели использовать Regex здесь (вместо этого вы должны проанализировать его и выполнить сравнение по числовому типу - например, float или double). Но вы могли бы сделать это:

-?(\d|([1-8][0-9])(\.\d)?)|(90(\.0)?)

Это будет соответствовать от -90.0 до 90.0 включительно. Если вы хотите, чтобы он был эксклюзивным, отбросьте предложение 90.0.

  • отрицательный (необязательный):
    -?

  • одна цифра
    ИЛИ двойная цифра, 10-89
    \d|([1-8][0-9])
    ПЛЮС десятичный, 0-9 (необязательно):
    (\.\d)?

  • ИЛИ 90
    90
    PLUS десятичный, 0 (необязательно):
    (\.0)?

Если вы хотите поддерживать более десятичные точки, измените предложение 0-89.9 на:

  • Конкретная точность (в этом случае семь) \d|([1-8][0-9])(\.\d{1,7})?
  • Бесконечная точность \d|([1-8][0-9])(\.\d+)?

Побег, если необходимо

Ответ 3

"Некоторые люди, столкнувшись с проблемой, думают" Я знаю, я буду использовать регулярные выражения ". Теперь у них есть две проблемы" .

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

-?0*((90(\.0*)?)|([1-8]?\d(\.\d*)?))

будет работать, я думаю. Сопоставьте необязательный "-", за которым следует любое количество нулей, за которым следует либо 90 с любым количеством нулей, либо число, состоящее из необязательного десятичного разряда между 1 и 8, за которым следует одна цифра, за которой следует необязательная десятичная и десятичные разряды. Но вы понимаете, почему использование регулярного выражения для этого настолько беспорядочно. Проверьте границы как числа, а не ряд цифр.