Я использую приведенный ниже скрипт для проверки моих паролей на длину, прописную букву, строчные буквы и цифры.
Как я могу изменить его, чтобы он менял символы FOR вместо символов?
<?php $password = 'afsd323A'; if( //I want to change this first line so that I am also checking for at least 1 symbol. ctype_alnum($password) // numbers & digits only && strlen($password)>6 // at least 7 chars && strlen($password)<21 // at most 20 chars && preg_match('`[AZ]`',$password) // at least one upper case && preg_match('`[az]`',$password) // at least one lower case && preg_match('`[0-9]`',$password) // at least one digit ) { echo 'valid'; } else { echo 'not valid';// not valid } ?>
ваше нужное регулярное выражение ниже
$pattern = ' ^.*(?=.{7,})(?=.*\d)(?=.*[az])(?=.*[AZ]).*$ '; preg_match($pattern,$password);
Тесты, если вход состоит из 6 или более символов ASCII. Вход должен содержать по крайней мере одну букву верхнего регистра, одну букву в нижнем регистре и одну цифру.
if(preg_match('/\A(?=[\x20-\x7E]*?[AZ])(?=[\x20-\x7E]*?[az])(?=[\x20-\x7E]*?[0-9])[\x20-\x7E]{6,}\z/' $password)) echo("valid password");
Либо вы определяете список допустимых символов:
preg_match('`[\$\*\.,+\-=@]`',$password)
или вы можете искать все, что не является alnum:
preg_match('`[^0-9a-zA-Z]`',$password)