Мне нужно регулярное выражение для соответствия любому числу от 0 до 99. Ведущие нули могут не включаться, это означает, что f.ex. 05 не разрешено.
Я знаю, как совместить 1-99, но не включаю 0.
Мое регулярное выражение для 1-99 есть
^[1-9][0-9]?$
Мне нужно регулярное выражение для соответствия любому числу от 0 до 99. Ведущие нули могут не включаться, это означает, что f.ex. 05 не разрешено.
Я знаю, как совместить 1-99, но не включаю 0.
Мое регулярное выражение для 1-99 есть
^[1-9][0-9]?$
Обновлено:
^([0-9]|[1-9][0-9])$
Соответствует 0-99. Не соответствует значениям с ведущими нулями. В зависимости от вашего приложения вам может потребоваться избегать круглых скобок и символа или.
Существует множество способов сделать это, но здесь есть альтернатива разрешению любой длины номера без начальных нулей
0-99
^(0|[1-9][0-9]{0,1})$
0-999 (просто увеличивайте {0, 2}):
^(0|[1-9][0-9]{0,2})$
1-99
^([1-9][0-9]{0,1})$
1-100:
^([1-9][0-9]{0,1}|100)$
Любое число в мире
^(0|[1-9][0-9]*)$
от 12 до 999
^(1[2-9]|[2-9][0-9]{1}|[1-9][0-9]{2})$
^(0|[1-9][0-9]?)$
Тестируем здесь http://regexr.com?2uu31 (включая различные образцы)
Вам нужно добавить 0|
, но имейте в виду, что "или" (|
) в Regexes имеет самый низкий приоритет. ^0|[1-9][0-9]?$
в действительности означает (^0)|([1-9][0-9]?$)
(мы проигнорируем, что теперь есть две группы захвата). Таким образом, это означает, что строка начинается с 0
"OR", строка заканчивается на [1-9][0-9]?
". Альтернативой использованию скобок является повторение ^$
, например ^0$|^[1-9][0-9]?$
.
[...], но не получите включенное значение.
Просто добавьте 0|...
перед выражением:
^(0|[1-9][0-9]?)$
^^
Простой ответ без использования оператора или делает опцию главной цифры:
^[1-9]?[0-9]$
Соответствует 0-99, запрещающему ведущие нули (01-09).
Это должно сделать трюк:
^(?:0|[1-9][0-9]?)$
Попробуйте это, это поможет вам
^([0-9]|[1-9][0-9])$
Это мое, более общее решение для поиска чисел без начальных нулей:
ИЗДАНО:
([1-9][0-9]*)$
см. Здесь: https://regex101.com/r/XYUIVl/5
Было:
(?:^0+)|(\d+)$