Вот часть вашего регулярного выражения, которая фактически потребляет ввод:
[A-Za-zd$@$!%*?&].{8,}
Это означает, что пароль должен начинаться с одного из символов в приведенном выше классе символов.Это также означает, что действительный пароль должен содержать девять или более символов, поскольку класс считается одним, а {8,}
означает 8 или более.Таким образом, следующее не будет выполнено, потому что оно не начинается с любого такого символа:
1oB!gb0s5
Второй приведенный вами пример дает сбой по другой причине, поскольку он содержит только 8 символов:
Pass@123
Я не знаю точно, какую логику вы хотите здесь.Если вы просто хотите убедиться, что пароль состоит из строчных, прописных букв, цифр и специальных символов, то, возможно, вы можете удалить класс ведущих символов и просто придерживаться заглядывания:
(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@$!%*?&]).{8,}
Вот демонстрационная версиякоторый показывает, что ваши два примера паролей будут проходить с использованием вышеуказанного шаблона.
Демо