#regex
#регулярное выражение
Вопрос:
Я пытаюсь проверить номер индийской карточки с помощью регулярных выражений.
Формат индийской карты pan — 5 букв — 4 цифры 0001-9999 — 1 Альфа
Я попробовал следовать регулярному выражению [A-Z]{5}[0-9]{4}[A-Z]{1}
Вообще говоря, он работает нормально, но это не совсем правильно для второго условия — он принимает 0000-9999, но мне нужно от 0001 до 9999. Как я должен изменить это регулярное выражение?
Комментарии:
1. Используйте предварительный просмотр:
^(?!0 $)[0-9]{4}$
2. Или
^(?!0000)d{4}$
Ответ №1:
Вы можете использовать отрицательный прогноз, чтобы отфильтровать правила, которые вам не нужны.
^(?!0 $)[0-9]{4}$
(?!0 $)
означает, что если остальная часть следующего текста состоит только из0
s, не пройдите тест.
Смотрите Доказательство
Редактировать
Если это не просто числа, вы можете удалить ^
и $
и вставить отрицательный прогноз (?!0{4})
перед [0-9]{4}
:
[A-Z]{5}(?!0{4})[0-9]{4}[A-Z]{1}
Комментарии:
1. и
(?=0*[1-9])
еще один вариант
Ответ №2:
Я нашел ответ от @TonyR
^[A-Z]{5}(?!0000)d{4}[A-Z]{1}$
Комментарии:
1. Он
{1}
полностью избыточен,[A-Z]
в нем уже указано соответствие одному символу в диапазоне от A до Z.