Регулярное выражение в Java для натуральных чисел (исключая те, которые начинаются с нуля) - PullRequest
4 голосов
/ 14 мая 2011

В настоящее время я использую "(\ d) {1,9}", но он не может сделать недействительными числа, такие как "0134". Выражение должно проверять только числа, которые являются положительными INTEGERS. Спасибо.

Ответы [ 2 ]

7 голосов
/ 14 мая 2011

Прямо сейчас вы используете выражение [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.

5 голосов
/ 14 мая 2011

Вы можете использовать регулярные выражения, как показано ниже:

^(?!^0)\d{1,9}$

То, что вы хотите сказать, это положительные целые числа без начальных нулей Я верю.

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