Регулярное выражение для оценки строки пароля

Я работаю над небольшим проектом, мне нужно оценить строку только из четырех символов [я могу написать немного RE, но этот получил меня.].
Мне нужно написать регулярное выражение, которое должно соответствовать 1 upper case слово, 1 lower case слово, one digit и один случайный символ, как [a-zA-Z0-9], порядок не имеет значения в строке.

Вот несколько строк, которые он должен передать или потерпеть неудачу.

Valid words: Abn1, GGh3, 89jK….

Invalid words: abcd, 112a, abDb, 2Ab, 4, AA, ….

любая помощь или хедс-ап ценится.

1

Решение

Множественный взгляд — ваш ответ

\b(?=[a-zA-Z0-9]*[a-z])(?=[a-zA-Z0-9]*[A-Z])(?=[a-zA-Z0-9]*[0-9])[a-zA-Z0-9]{4}\b

(?=[a-zA-Z0-9]*[a-z])    # string contains any lowercase character
(?=[a-zA-Z0-9]*[A-Z])    # string contains any uppercase character
(?=[a-zA-Z0-9]*[0-9])    # string contains any digit
[a-zA-Z0-9]{4}           # 4 characters, since the 4th is  the type that can fit in any of the three

Если строка из одного ввода (например, 4-символьное текстовое поле, вы должны заменить границы слова (\b) с ^ а также $, лайк

^(?=[a-zA-Z0-9]*[a-z])(?=[a-zA-Z0-9]*[A-Z])(?=[a-zA-Z0-9]*[0-9])[a-zA-Z0-9]{4}$
3

Другие решения

Единый RegExp не является хорошим способом сделать это.

Лучшее решение — просто проверить свои правила в цикле итерации символов.

В качестве опции вы можете написать 3 простых регулярных выражения для каждого правила вместо одного большого регулярного выражения.

-1

По вопросам рекламы [email protected]