Регулярное выражение двухзначного числа
Всем привет. Пишу код, который принимает с клавиатуры на вход массив чисел, запрашивать размер скидки, номер позиции и количество позиций. Дальше сделал регулярное выражение на проверку введенных символов, что это число. "[0-9]+[0-9]*". Число может быть равно 0, но не может быть равно 01, 02 или подобное. Моя регулярка работает неправильно, так как принимает 02, например.
Оно должно пропускать числа от 1 до бесконечности и если число равно 0
Ответы (1 шт):
Если действительно нужна регулярка для проверки чисел без нулей слева, следует проверить строку на единственный 0 ИЛИ на [1-9], после которых идут 0 или больше цифр:
private static boolean numberWithoutLeadingZeros(String num) {
return num != null && num.matches("0|[1-9]\\d*");
}
Оно должно пропускать числа от 1 до бесконечности и если число равно 0
Требование насчёт бесконечности строго говоря невыполнимо, так как исходная строка (класс String) или теоретически бесконечное число типа BigInteger используют массивы, размер которых ограничен, не говоря уже о примитивных целочисленных типах int / long, занимающих 4 / 8 байт соответственно.