Проверка строки на несколько условий (regex)

Есть строки вида "5KXH6bXuyX7xDUiNDiyX2VqvePBqpAJWuKDypJBZeS9qPf3LNGJ" длиной 51 символ. Нужно regex-выражение, позволяющее находить такие строки в тексте. Критерии:

  • первый символ 5 или K или L
  • строка содержит несколько цифр
  • строка содержит и строчные и заглавные буквы.

(с помощью ИИ дошел до такого вида 5KL[A-Za-z0-9]{50}, но на практике не отсеивает по первому критерию и по третьему)


Ответы (2 шт):

Автор решения: Alexandroppolus
\b[5KL](?=.{0,49}?[A-Z])(?=.{0,49}?[a-z])(?=.{0,49}?\d)[A-Za-z0-9]{50}\b

Добавлены проверки на "границу слова" (\b) и проверки на наличие цифр, заглавных и строчных букв, причём каждое из перечисленных должно быть не далее чем через 49 символов от стартового знака

→ Ссылка
Автор решения: ReinRaus

Регулярное выражение:

(?=[5KL])        # первый символ 5 или K или L
(?=..{,49}\d)    # должна быть хотя бы одна цифра
(?=..{,49}[a-z]) # должна быть хотя бы одна строчная буква
(?=..{,49}[A-Z]) # должна быть хотя бы одна заглавная буква
[a-zA-Z0-9]{51}  # 51 цифра или буква, а условия указаны ранее

Пример его работы: https://regex101.com/r/jwcjZw/1

Оно же минифицированное:

(?=[5KL])(?=..{,49}\d)(?=..{,49}[a-z])(?=..{,49}[A-Z])[a-zA-Z0-9]{51}
→ Ссылка