RegEx для 4 символов и 7 номеров. Никаких специальных символов - PullRequest
3 голосов
/ 16 октября 2019

Я пытаюсь написать RegEx для соответствия некоторым строкам, таким как ABCD1234567, 123ABC456D7 или 12A34B56C7D. Там должно быть 4 символа и 7 цифр, порядок не важен. И не должно быть никаких специальных символов, таких как *., - и т. Д.

Я уже пытался написать что-то вроде этого.

^[A-Zaz]{4}[0-9]{7}$

Может кто-нибудь помочь мне

Ответы [ 2 ]

3 голосов
/ 16 октября 2019

Я бы использовал Lookahead , чтобы проверить допустимые символы и точную длину и сопоставить с остальными.

^(?=[A-Za-z\d]{11}$)\d*(?:\D\d*){4}$
  • (?=[A-Za-z\d]{11}$) Lookahead проверяет ровно 11[A-Za-z\d]
  • \d*(?:\D\d*){4} соответствует ровно 4 цифрам с любыми \D не цифрами между

См. Эту демонстрацию на regex101

3 голосов
/ 16 октября 2019

Шаблон ^[A-Zaz]{4}[0-9]{7}$ соответствует 4 раза A-Za-z и 7 цифрам в указанном порядке.

Вместо этого можно использовать косвенные утверждения с квантификаторами:

^(?=(?:[^A-Za-z\r\n]*[A-Za-z]){4})(?=(?:[^0-9\r\n]*[0-9]){7})[A-Za-z0-9]+$
  • ^ Начало строки
  • (?=(?:[^A-Za-z\r\n]*[A-Za-z]){4}) Подтверждение 4-х символов AZ
  • (?=(?:[^0-9\r\n]*[0-9]){7}) Подтверждение 7 цифр
  • [A-Za-z0-9]+ Соответствие 1+ раз любому из перечисленных или использование[A-Za-z0-9]{11} точно соответствует 11
  • $ Конец строки

Regex demo

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