Регулярное выражение Диапазон с десятичным числом 0,1 - 7,0 - PullRequest
4 голосов
/ 21 марта 2012

Мне нужно регулярное выражение, которое должно проверять десятичную точку и диапазон.Всего должно присутствовать 3 числа, включая точку, и значение должно быть больше 0,0.Это означает, что допустимый диапазон составляет от 0,1 до 7,0.

Я использовал следующее регулярное выражение: ^\\d{1,1}(\\.\\d{1,2})?$

Работает нормально, за исключением проверки диапазона.Что мне нужно изменить?

1 Ответ

14 голосов
/ 21 марта 2012

Регулярные выражения, как известно, плохо проверяют диапазоны номеров. Но это возможно. Вы должны разбить диапазон номеров на ожидаемые текстовые представления этих чисел:

^                  # Start of string
(?:                # Either match...
 7(?:\.0)?         # 7.0 (or 7)
|                  # or
 [1-6](?:\.[0-9])? # 1.0-6.9 (or 1-6)
|                  # or
 0?\.[1-9]         # 0.1-0.9 (or .1-.9)
)                  # End of alternation
$                  # End of string

Как однострочник:

^(?:7(?:\.0)?|[1-6](?:\.[0-9])?|0?\.[1-9])$

В Java:

Pattern regex = Pattern.compile("^(?:7(?:\\.0)?|[1-6](?:\\.[0-9])?|0?\\.[1-9])$");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...