Проверка строки на несколько условий (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}