Ответ 1
PHP regex также нуждается в расшифровках регулярных выражений, поэтому используйте:
$pattern = '/(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/';
Я думал использовать preg_match(), чтобы проверить, правильно ли введен пароль. Я хочу, по крайней мере, 1 прописную букву, как минимум 1 строчную букву, по крайней мере одно число и по крайней мере один специальный char. Вот что я использую:
$pattern = "(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$";
Это регулярное выражение отлично работает в поле "шаблон" HTML. Но мне нужно убедиться, что он также проверен для старых браузеров.
Мой PHP-код таков:
if (!(preg_match($pattern, $loginpassword))) {echo "Password must include one uppercase letter, one lowercase letter, one number, and one special character such as $ or %."; die;}
Я думал, что он отлично работает, только когда я использую пароль 1 @abcdeF, он также не подходит. PHP-код, похоже, работает, но пароль никогда не совпадает, даже если он ДОЛЖЕН соответствовать шаблону. HTML5 разрешит это, так что я подозреваю, что регулярное выражение корректно, но что-то о моей настройке на PHP является ошибочным. Кто-нибудь может видеть, что мне не хватает?
PHP regex также нуждается в расшифровках регулярных выражений, поэтому используйте:
$pattern = '/(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/';
Используйте следующий шаблон:
$strong_password = preg_match ('/^ (? =. [az]) (? =. [AZ]) (? =.\d) (? =. [^ A-Za-z\d]) [\s\S] {6,16} $/', $string);
^ --> start of string
(?=.*[a-z]) --> at least one lowercase letter
(?=.*[A-Z]) --> at least one uppercase letter
(?=.*\d) --> at least one number
(?=.*[^A-Za-z\d]) --> at least one special character
[\s\S]{6,16} --> total length between 6 and 16
$ --> end of string