Не могли бы вы указать мне соответствующий RegEx для проверки целого числа с максимальной длиной 10 символов?
Действующие включают: 1234567890
Не могли бы вы указать мне соответствующий RegEx для проверки целого числа с максимальной длиной 10 символов?
Действующие включают: 1234567890
[+-]?[0-9]{1,10}
В словах: Необязательный + или - за которым следует цифра, повторяется один раз до десяти раз. Обратите внимание, что в большинстве библиотек есть ярлык для цифры: \d
, поэтому вышеупомянутое может быть также записано как: \d{1,10}
.
Не забывайте, что целые числа могут быть отрицательными:
^\s*-?[0-9]{1,10}\s*$
Здесь смысл каждой части:
^
: Матч должен начинаться с начала строки\s
: любой символ пробела
*
: Происходит ноль или более раз-
: символ дефис-минус, используемый для обозначения отрицательного целого числа
?
: Может или не может произойти[0-9]
: Любой символ, код ASCII (или код кода Unicode) находится между '0' и '9'
{1,10}
: По крайней мере один, но не более десяти раз\s
: любой символ пробела
*
: Происходит ноль или более раз$
: Матч должен заканчиваться в конце строкиЭто игнорирует начальные и конечные пробелы и будет более сложным, если вы считаете, что допустимы запятые, или если вам нужно считать знак минус одним из десяти допустимых символов.
От 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. Здесь очень полезная песочница.
В большинстве языков, о которых я знаю, фактическое регулярное выражение для проверки должно быть
^[0-9]{1,10}$
; в противном случае совпадение также будет возвращать положительные совпадения, если проверяемое число является частью более длинной строки.
0123456789 не является допустимым целым числом (обычно нули будут удалены)
Я думаю, что что-то вроде этого regexp было бы лучше использовать:
^[1-9]([0-9]*)$
(не поддерживает подписанные числа)