RegEx для проверки целого числа с максимальной длиной 10 символов
Не могли бы вы указать мне соответствующий RegEx для проверки целого числа с максимальной длиной 10 символов?
Действующие включают: 1234567890
Ответы
Ответ 1
[+-]?[0-9]{1,10}
В словах: Необязательный + или - за которым следует цифра, повторяется один раз до десяти раз. Обратите внимание, что в большинстве библиотек есть ярлык для цифры: \d
, поэтому вышеупомянутое может быть также записано как: \d{1,10}
.
Ответ 2
Не забывайте, что целые числа могут быть отрицательными:
^\s*-?[0-9]{1,10}\s*$
Здесь смысл каждой части:
-
^
: Матч должен начинаться с начала строки
-
\s
: любой символ пробела
-
*
: Происходит ноль или более раз
-
-
: символ дефис-минус, используемый для обозначения отрицательного целого числа
-
?
: Может или не может произойти
-
[0-9]
: Любой символ, код ASCII (или код кода Unicode) находится между '0' и '9'
-
{1,10}
: По крайней мере один, но не более десяти раз
-
\s
: любой символ пробела
-
*
: Происходит ноль или более раз
-
$
: Матч должен заканчиваться в конце строки
Это игнорирует начальные и конечные пробелы и будет более сложным, если вы считаете, что допустимы запятые, или если вам нужно считать знак минус одним из десяти допустимых символов.
Ответ 3
От 1 до 10:
[0-9]{1,10}
В . NET (и не только, см. комментарий ниже) также действителен (с условием):
\d{1,10}
С#:
var regex = new Regex("^[0-9]{1,10}$", RegexOptions.Compiled);
regex.IsMatch("1"); // true
regex.IsMatch("12"); // true
..
regex.IsMatch("1234567890"); // true
regex.IsMatch(""); // false
regex.IsMatch(" "); // true
regex.IsMatch("a"); // false
P.S. Здесь очень полезная песочница.
Ответ 4
В большинстве языков, о которых я знаю, фактическое регулярное выражение для проверки должно быть
^[0-9]{1,10}$
; в противном случае совпадение также будет возвращать положительные совпадения, если проверяемое число является частью более длинной строки.
Ответ 5
0123456789 не является допустимым целым числом (обычно нули будут удалены)
Я думаю, что что-то вроде этого regexp было бы лучше использовать:
^[1-9]([0-9]*)$
(не поддерживает подписанные числа)