Регулярное выражение для чисел без начальных нулей

Мне нужно регулярное выражение для соответствия любому числу от 0 до 99. Ведущие нули могут не включаться, это означает, что f.ex. 05 не разрешено.

Я знаю, как совместить 1-99, но не включаю 0.

Мое регулярное выражение для 1-99 есть

^[1-9][0-9]?$

Ответ 1

Обновлено:

^([0-9]|[1-9][0-9])$

Соответствует 0-99. Не соответствует значениям с ведущими нулями. В зависимости от вашего приложения вам может потребоваться избегать круглых скобок и символа или.

Ответ 2

Существует множество способов сделать это, но здесь есть альтернатива разрешению любой длины номера без начальных нулей

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})$

Ответ 3

^(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]?$.

Ответ 4

[...], но не получите включенное значение.

Просто добавьте 0|... перед выражением:

^(0|[1-9][0-9]?)$
  ^^

Ответ 5

Простой ответ без использования оператора или делает опцию главной цифры:

    ^[1-9]?[0-9]$

Соответствует 0-99, запрещающему ведущие нули (01-09).

Ответ 6

Это должно сделать трюк:

^(?:0|[1-9][0-9]?)$

Ответ 7

Попробуйте это, это поможет вам

^([0-9]|[1-9][0-9])$

Ответ 8

Это мое, более общее решение для поиска чисел без начальных нулей:

ИЗДАНО:

([1-9][0-9]*)$ см. Здесь: https://regex101.com/r/XYUIVl/5

Было:

(?:^0+)|(\d+)$