Ответ 1
Попробуйте это:
^[1-9]\d*$
... и некоторые отступы превышают 30 символов, так что предел ответа :-).
Как можно улучшить ^\d+$
, чтобы запретить 0
?
ИЗМЕНИТЬ (сделайте его более конкретным):
Примеры, позволяющие:
1
30
111
Примеры запрета:
0
00
-22
Не имеет значения, допустимы ли положительные числа с начальным нулем или нет (например, 022
).
Это для реализации Java JDK Regex.
Попробуйте это:
^[1-9]\d*$
... и некоторые отступы превышают 30 символов, так что предел ответа :-).
Извините, что пришел поздно, но OP хочет разрешить 076
, но, вероятно, НЕ хочет разрешать 0000000000
.
Итак, в этом случае нам нужна строка из одной или нескольких цифр, содержащих по крайней мере один ненулевой. Это
^[0-9]*[1-9][0-9]*$
Вы можете попробовать отрицательное утверждение:
^(?!0+$)\d+$
Попробуйте это, этот лучше всего подходит для выполнения requiremnt.
[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
^\d*[1-9]\d*$
это может включать в себя все положительные значения, даже если оно дополнено нулем в передней части
Позволяет
1
01
10
11 и т.д.
не разрешать
0
00
000 и т.д.
Получается следующее:
^[1-9]|[0-9]{2,}$
Кто-то бьет его?:) Возможно, вы захотите этого (отредактируйте: разрешите номер формы 0123
):
^\\+?[1-9]$|^\\+?\d+$
однако, если бы это был я, я бы вместо этого сделал
int x = Integer.parseInt(s)
if (x > 0) {...}
Просто для удовольствия, другая альтернатива, использующая lookaheads:
^(?=\d*[1-9])\d+$
Как много цифр, как вы хотите, но по крайней мере один должен быть [1-9]
.
Этот 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]))$
Любое положительное целое число, кроме 0: ^\+?[1-9]\d*$
Любое положительное целое число, включая 0: ^(0|\+?[1-9]\d*)$
^ [1-9] * $- самый простой, о котором я могу думать
Это должно допускать только десятичные знаки > 0
^([0-9]\.\d+)|([1-9]\d*\.?\d*)$