Ответ 1
Сверху моей головы (не проверено)
^(0?[1-9]|[1-9][0-9])$
Мне нужно проверить некоторые пользовательские данные, чтобы обеспечить введенное число в диапазоне от 1-99 включительно. Они должны быть целыми (целыми) значениями
Допускается 0, но необязательно
Допустимые значения
Недопустимые значения
До сих пор у меня есть следующее регулярное выражение, которое я разработал: ^0?([1-9][0-9])$
Это разрешает необязательный 0 в начале, но не является 100% правильным, поскольку 1
не считается допустимым
Любые улучшения/предложения?
Сверху моей головы (не проверено)
^(0?[1-9]|[1-9][0-9])$
Здесь вы идете:
^(\d?[1-9]|[1-9]0)$
Значение, которое вы разрешаете либо из
^(([0-9][1-9])|([1-9][0-9])|[1-9])$
должен работать
Почему существует регулярное выражение? Он не идеален для вычисления числового диапазона.
У общего доступа Apache есть IntegerValidator со следующим:
isInRange(value, 1, 99)
Кроме того, если вы используете Spring, Struts, Wicket, Hibernate и т.д., у вас уже есть доступ к валидатору диапазона. Не изобретайте велосипед с регулярными выражениями.
Я думаю, это должно быть...
^(0[1-9]|[1-9][0-9])$
Это работало для меня:
([1-9][0-9])|(0?[1-9])
Он проверяет наличие 10-99 или 1-9 = > 1-99 с одним допустимым нулевым значением
Просто выполните:
^([0]?[1-9]{1,2})$
Диапазон будет установлен от 0
до 9
, а {1,2}
означает минимальные цифры = 1 и максимальные цифры = 2.
Он примет, например: 0, 00, 01, 11, 45, 99,
и т.д....
Он не принимает, например: 000, 1.2, 5,4, 3490,
и т.д.
Это самое простое, я могу подумать:
^([1-9][0-9]?)$
Позволяет использовать только 1-99 включительно.
^[0-9]{1,2}$
тоже должен работать (он тоже будет соответствовать 00, надеюсь, что это будет действительное совпадение).
String d = "11"
if (d.length() <= 2 && d.length() >=1) {
try {
Integer i = Integer.valueOf(d);
return i <= 99 && i >= 0
}
catch (NumberFormatException e) {
return false;
}
}