Как я могу проверить диапазон 1-99 с помощью регулярных выражений? - PullRequest
17 голосов
/ 25 октября 2010

Мне нужно подтвердить ввод пользователя, чтобы убедиться, что введенный номер находится в диапазоне от 1 до 99 включительно. Это должны быть целые (целые) значения

Допускается до 0, но необязательно

Допустимые значения

  1. 1
  2. 01
  3. 10
  4. 99
  5. 09

Неверные значения

  1. 0
  2. 007
  3. 100
  4. 10,5
  5. 010

Пока у меня есть следующее регулярное выражение, которое я разработал: ^0?([1-9][0-9])$

Это допускает необязательный 0 в начале, но не на 100% правильно, так как 1 не считается действительным

Есть ли улучшения / предложения?

Ответы [ 11 ]

25 голосов
/ 25 октября 2010

с макушки головы (не подтверждено)

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

14 голосов
/ 25 октября 2010

А вот и вы:

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

Это означает, что вы разрешаете либо

  1. от 1 до 9 или от 01 до 09, от 11 до 19, от 21 до 29, ...От 91 до 99
  2. 10, 20, ..., 90
5 голосов
/ 25 октября 2010

Почему регулярное выражение является требованием? Он не идеален для вычислений числового диапазона.

Apache commons имеет IntegerValidator со следующим:

isInRange(value, 1, 99)

Кроме того, если вы используете Spring, Struts, Wicket, Hibernate и т. Д., У вас уже есть доступ к средству проверки диапазона. Не изобретайте колесо с помощью регулярных выражений.

4 голосов
/ 25 октября 2010
^(([0-9][1-9])|([1-9][0-9])|[1-9])$

должно работать

1 голос
/ 18 октября 2018

довольно поздно, но это сработает.

^[1-9][0-9]?$
1 голос
/ 02 февраля 2014

Я думаю, что это должно быть как ...

^(0[1-9]|[1-9][0-9])$
0 голосов
/ 14 июня 2016

Это самое простое из возможных:

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

Допускается только 1-99 включительно.

0 голосов
/ 02 октября 2015

Просто выполните:

^([0]?[1-9]{1,2})$

Диапазон будет установлен от 0 до 9, а {1,2} означает минимальные цифры = 1 и максимальные цифры = 2.

Он примет, например: 0, 00, 01, 11, 45, 99, и т.д ... Он не примет, например: 000, 1.2, 5,4, 3490, и т. Д. *

0 голосов
/ 27 сентября 2015

Этот работал для меня:

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

Он проверяет на 10-99 или 1-9 => 1-99 с одним разрешенным начальным нулем

0 голосов
/ 25 октября 2010
^[0-9]{1,2}$ 

тоже должно работать (тоже будет соответствовать 00, надеюсь, это верное совпадение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...