Мне нужно регулярное выражение, для которого требуется хотя бы одно число и максимум SIX.
Я разработал это, но ни один из них не работает.
^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
^[0-999999]$
Любое другое предложение?
Мне нужно регулярное выражение, для которого требуется хотя бы одно число и максимум SIX.
Я разработал это, но ни один из них не работает.
^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
^[0-999999]$
Любое другое предложение?
Вы можете использовать квантификатор диапазона {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]
.
^\d{1,6}$
....................
Вы можете попробовать
^[0-9]{1,6}$
он должен работать.
^[0-9]{1,6}$
должен это сделать. Я не знаю, что VB.NET достаточно хорош, чтобы знать, если он там же.
Для примера рассмотрим Wikipedia.