Я пытаюсь получить другую ошибку для каждого типа: отсутствие прописных букв, отсутствие нижнего регистра, отсутствующий номер или пробел. Длина, кажется, единственная работа. Я угадываю, потому что это в начале кода. Я пробовал разные варианты и не могу заставить его работать.Проверка пароля с помощью Regex
<?php
$Passwords = array(
"F!ve5",
"This !s12",
"w!zard12",
"W!ZARD12",
"W!zardJK",
"Wizard12",
"!Qazxsw2",
"@Wsxzaq1",
"@Wsxcde3",
"#Edcxsw2");
foreach ($Passwords as $StongPass) {
echo "<p>The Password “" . $StongPass .
"” </p>";
if (strlen($StongPass)<8)
echo "Password is to short!";
elseif (strlen($StongPass)>16)
echo "Password is to long!";
elseif (preg_match('/P[A-Z]/', $StongPass))
echo "Password does not contain an upper case letter!";
elseif (preg_match('/P[a-z]/', $StongPass))
echo "Password does not contain a lower case letter!";
elseif (preg_match('/P[[email protected]#$%^&*()\-_=+{};:,<.>]/', $StongPass))
echo "Password does not contain a special letter!";
elseif (preg_match('/P[0-9]/', $StongPass))
echo "Password does not contain a number!";
elseif (preg_match('/P[""]/', $StongPass))
echo "Password cannot contain any spaces!";
else
echo "Password is strong!";
}
?>
Результаты выглядят как этот «Пароль„F! VE5“ Пароль должен коротка! пароль„это! S12“ Пароль сильна! Пароля„W! Zard12“ Пароль сильный! Пароль «W! ZARD12» Пароль прочен! »
Почему 'P' в начале каждого регулярного выражения? Эти шаблоны будут соответствовать только в том случае, если строка содержит 'P' непосредственно перед символом, который вы ищете. –
Я избавился от P и добавил! Preg_match это помогло, за исключением последних четырех, которые должны быть vaild теперь говорят, что он не соответствует из-за пробела. – WiseFool
Нет причин ограничивать длину пароля или не допускать пробелы. Вы все равно не должны хранить пароли. –