Нужно регулярное выражение только для буквенно-цифровых (без чистых цифр или букв) И ограничить до 10 символов? - PullRequest
4 голосов
/ 09 апреля 2019

Я столкнулся с некоторыми проблемами с этим и не могу найти его в прошлых вопросах.

Критерии:

  1. Отклонить чистые цифры
  2. Отклонить чистые буквы
  3. Отклонить любые символы
  4. Принять ТОЛЬКО буквенно-цифровую комбинацию
  5. ДОЛЖНО быть равным всего 10 символов

Вот что я сделал и проблемыс каждым:

  1. ^(?!^\d*$)[a-zA-Z\d]{10}$

    • Это не соответствует критериям # 2
  2. ^[a-zA-Z0-9]{10}$

    • Критерии не соответствуют # 1

Я пробовал некоторые другие, которые соответствуют всем критериям, но не соответствуют пределу в 10 символов.

Любая помощь приветствуется.

Ответы [ 3 ]

5 голосов
/ 09 апреля 2019

Вы можете использовать второй взгляд:

^(?!\d+$)(?![a-zA-Z]+$)[a-zA-Z\d]{10}$

См. Демоверсию regex и график Regulex :

enter image description here

Детали

  • ^ - начало строки
  • (?!\d+$) - негативный взгляд, который гарантирует, что вся строка состоит не только из цифр
  • (?![a-zA-Z]+$) - вся строка не может быть всеми буквами
  • [a-zA-Z\d]{10} - 10 букв или цифр
  • $ - конец строки.
1 голос
/ 09 апреля 2019

Используйте lookahead, чтобы найти хотя бы один символ каждого типа, который вам требуется, и укажите длину и ограничение символа в «обычной» части вашего регулярного выражения:

^(?=.*[a-zA-Z])(?=.*\d)[0-9a-zA-Z]{10}$

  • (?=.*[a-zA-Z]) - посмотрите в будущее и найдите букву,
  • (?=.*\d) - посмотрите в будущее и найдите цифру
  • [0-9a-zA-Z]{10} - ровно 10 цифр / буквасимволы
1 голос
/ 09 апреля 2019

Попробуйте:

(?=^.{10}$)^([a-z]+\d[a-z0-9]*|\d+[a-z][a-z0-9]*)$

Демо

Объяснение:

(?=^.{10}$)^([a-z]+\d[a-z0-9]*|\d+[a-z][a-z0-9]*)$
(?=^.{10}$)                                         # there's exactly 10 characters following
           ^(                 |                 )$  # we match the entire string, containing either:
             [a-z]+\d[a-z0-9]*                      # letters, followed by a number, followed by alphanumerics, or
                               \d+[a-z][a-z0-9]*    # numbers, followed by a letter, followed by alphanumerics
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...