Пересчитайте любые символы алфавита c, кроме определенных и максимальной последовательности цифр - PullRequest
0 голосов
/ 12 февраля 2020

Ищет регулярное выражение, которое найдет поле длиной 12 букв c, но не может иметь заглавные или прописные буквы 'O' или 'I'. Также не может быть специальных символов. И не может иметь последовательность из 9 или более чисел подряд. Я знаю, что могу сделать ^ [a-hj-np-zA-HJ-NP-Z0-9] {12} $, но я не знаю, как не совпадать, если в строке 9 или более чисел.

12345678A903 должно быть действительным.
abcdefghj34y должно быть действительным.
123456789a34 должно быть недействительным
abc987654321 должно быть недействительным

Ответы [ 3 ]

1 голос
/ 12 февраля 2020
(?i)^(?!.*\d{9})[A-HJ-NP-Z0-9]{12}$

Где:

  • (?i) # без учета регистра
  • ^ # начало строки
  • (?!.*\d{9}) # отрицательный взгляд, сделать уверен, что у нас нет 9+ последовательных цифр
  • [A-HJ-NP-Z0-9]{12} # 12 буквенно-цифровых символов, кроме I и O (из-за (? i) он совпадает также с строчными буквами)
  • $ # конец Строка

Демонстрация и объяснение

0 голосов
/ 12 февраля 2020

Вы можете попробовать такой шаблон ^(?!.*[oOiI])(?!.*\d{9,})[a-zA-Z0-9]{12}$

Объяснение:

^ - совпадение начала строки

(?!.*[oOiI]) - отрицательный взгляд: утверждайте, что в в строке нет ни одного из символов: oOiI

(?!.*\d{9,}) - отрицательный прогноз: утверждать, что в строке нет 9 или более последовательных цифр

[a-zA-Z0-9]{12} - совпадение 12 букв c символов

$ - совпадение конца строки

Демо

0 голосов
/ 12 февраля 2020

Как насчет этого:

^(?!.*?\d{9,})[a-hj-np-zA-HJ-NP-Z0-9]{12}$

Как видно здесь

Объяснение:

(?!.*?\d{9,}) является отрицательное предпросмотр в регулярном выражении, что означает, что за соответствием НЕ должно следовать нулевое или более символов и 9 или более цифр

Об отрицательных заглядываниях вы можете узнать здесь: регулярные выражения .info

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...