Прямо сейчас вы используете выражение [0-9]{1,9}
, так что это явно позволяет число 0134
.Если вы хотите, чтобы первый символ отличался от нуля, вы должны использовать [1-9][0-9]{0,8}
.
. Кстати: 0134 - это положительное целое число.Это целое число, и оно положительное.;)
edit:
Для предотвращения целочисленного переполнения вы можете использовать этот шаблон:
[1-9][0-9]{0,8}
[1-1][0-9]{9}
[2-2][0-1][0-9]{8}
[2-2][1-1][0-3][0-9]{7}
[2-2][1-1][4-4][0-6][0-9]{6}
- …
Я думаю, вы получитеидея.Затем вы объединяете эти выражения с |
, и все готово.
В качестве альтернативы, посмотрите на метод Integer.valueOf(String)
, как он анализирует числа и проверяет переполнение.Скопируйте этот код и измените деталь с помощью NumberFormatException
.