Что такое регулярное выражение для чисел от -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, за которым следует одна цифра, за которой следует необязательная десятичная и десятичные разряды. Но вы понимаете, почему использование регулярного выражения для этого настолько беспорядочно. Проверьте границы как числа, а не ряд цифр.