Как можно ^\d+$
улучшить запретить 0
?
ИЗМЕНИТЬ (сделать более конкретным):
Примеры , чтобы:
1
30
111
Примеров Disallow:
0
00
-22
Не имеет значения, разрешены ли положительные числа с нулем в начале (например 022
).
Это для реализации Java JDK Regex.
076
,?Ответы:
Попробуй это:
^[1-9]\d*$
... и некоторые отступы, превышающие 30-символьный лимит ответа SO :-).
Вот демо
источник
^[1-9]+$
работать?^[1-9]+$
не позволил бы 10^[1-9]+$
не позволит10
. @Mulmoth предложение позволит1
, так как\d*
совпадает ноль или более раз. Однако это не позволит076
, так как это не начинается с[1-9]
.01
?Извините за опоздание, но OP хочет разрешить,
076
но, вероятно, НЕ хочет0000000000
.Итак, в этом случае нам нужна строка из одной или нескольких цифр, содержащая хотя бы один ненулевой . То есть
^[0-9]*[1-9][0-9]*$
источник
^[0-9]*[1-9][0-9]*(\.[0-9]+)$
это предположение о том, что вы подразумеваете под «десятичным числом». Вам нужны показательные детали? Это довольно сложно, так что задайте другой вопрос.^0*[1-9]\d*$
поскольку первый[0-9]*
активен только до тех пор, пока не[1-9]
найдет первый ненулевой, то есть он активен только до тех пор, пока не будут начальные нули (0*
).Вы можете попробовать утверждение отрицательного просмотра вперед:
^(?!0+$)\d+$
источник
Попробуйте этот, он лучше всего подходит для удовлетворения требований.
[1-9][0-9]*
Вот пример вывода
String 0 matches regex: false String 1 matches regex: true String 2 matches regex: true String 3 matches regex: true String 4 matches regex: true String 5 matches regex: true String 6 matches regex: true String 7 matches regex: true String 8 matches regex: true String 9 matches regex: true String 10 matches regex: true String 11 matches regex: true String 12 matches regex: true String 13 matches regex: true String 14 matches regex: true String 15 matches regex: true String 16 matches regex: true String 999 matches regex: true String 2654 matches regex: true String 25633 matches regex: true String 254444 matches regex: true String 0.1 matches regex: false String 0.2 matches regex: false String 0.3 matches regex: false String -1 matches regex: false String -2 matches regex: false String -5 matches regex: false String -6 matches regex: false String -6.8 matches regex: false String -9 matches regex: false String -54 matches regex: false String -29 matches regex: false String 1000 matches regex: true String 100000 matches regex: true
источник
[1-9]\d*
.^\d*[1-9]\d*$
это может включать все положительные значения, даже если оно дополнено Zero спереди
Позволяет
1
01
10
11 и т. Д.
не позволяют
0
00
000 и т. Д.
источник
Любое положительное целое число, кроме 0:
^\+?[1-9]\d*$
Любое положительное целое число, включая 0:
^(0|\+?[1-9]\d*)$
источник
Получил это:
^[1-9]|[0-9]{2,}$
Кто-то его бьет? :)
источник
00
Вы хотите этого? А это позволит1aaaaa
иabcd01
.^
принадлежит только первому варианту и$
только второму, чтобы решить эту проблему, заключите его в скобки^([1-9]|[0-9]{2,})$
000000000
. Вы сказали любое целое число, кроме нуля .Ради удовольствия, еще одна альтернатива с использованием опережающих просмотров:
^(?=\d*[1-9])\d+$
Столько цифр, сколько хотите, но должна быть хотя бы одна
[1-9]
.источник
Возможно, вы захотите это (изменить: разрешить номер формы
0123
):^\\+?[1-9]$|^\\+?\d+$
однако, если бы это был я, я бы вместо этого сделал
int x = Integer.parseInt(s) if (x > 0) {...}
источник
Integer.parseInt()
сам по себе добавляет очень мало накладных расходов. Это дорогое удовольствие - выбросить и отловить исключения.\\+?
приставками? Я предполагаю, что это должен быть экранированный знак плюса, как в исходном коде Java, но почему? Если знаки минуса не разрешены, я думаю, можно с уверенностью предположить, что знаки плюс тоже отсутствуют.Этот RegEx соответствует любому положительному целому числу из 0:
(?<!-)(?<!\d)[1-9][0-9]*
Он работает с двумя отрицательными функциями просмотра назад, которые ищут минус перед числом, что указывает на отрицательное число. Это также работает для любого отрицательного числа больше -9 (например, -22).
источник
Мой шаблон сложный, но он точно охватывает «Любое положительное целое число, кроме 0» (1 - 2147483647, не долго). Это для десятичных чисел и не допускает начальных нулей.
^((1?[1-9][0-9]{0,8})|20[0-9]{8}|(21[0-3][0-9]{7})|(214[0-6][0-9]{6}) |(2147[0-3][0-9]{5})|(21474[0-7][0-9]{4})|(214748[0-2][0-9]{3}) |(2147483[0-5][0-9]{2})|(21474836[0-3][0-9])|(214748364[0-7]))$
источник
^ [1-9] * $ - это самое простое, что я могу придумать
источник
10
и29303
. Он также будет соответствовать пустой строке.Это должно разрешать только десятичные дроби> 0
^([0-9]\.\d+)|([1-9]\d*\.?\d*)$
источник