Ответ 1
Вы можете использовать квантификатор диапазона {min,max}
, чтобы указать минимум 1 цифру и максимум 6 цифр как:
^[0-9]{1,6}$
Пояснение:
^ : Start anchor
[0-9] : Character class to match one of the 10 digits
{1,6} : Range quantifier. Minimum 1 repetition and maximum 6.
$ : End anchor
Почему ваше регулярное выражение не работает?
Вы были почти близки к регулярному выражению:
^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
Поскольку вы избежали ?
, предшествуя ему с помощью \
, ?
больше не выступал в качестве метасимвола регулярного выражения (для повторений 0
или 1
), но обрабатывался буквально.
Чтобы исправить это, просто удалите \
, и вы там.
Регулярное выражение на основе квантора является более коротким, более читаемым и может быть легко распространено на любое количество цифр.
Второе регулярное выражение:
^[0-999999]$
эквивалентно:
^[0-9]$
который соответствует строкам с точностью до одной цифры. Они эквивалентны, потому что класс символов [aaaab]
такой же, как [ab]
.