Nie ma potrzeby stosowania dziwnego wyrażenia regularnego. Zwłaszcza, że chcesz, aby upewnić się, że hasło zawiera lub nie zawiera, i nie ma znaczenia, gdzie wydaje się:
<?php
/**
* Validates the password:
* * Has at least one alphabet character
* * Has at least one digit
* * Has no spaces
*
* @param string $password Password to validate
*
* @return bool Whether $password is valid or not.
*/
function validate_password($password) {
//If no alphabet characters found, return false.
if (!preg_match("/[a-z]/i", $password)) {
return false;
}
//If no digits found, return false.
if (!preg_match("/[0-9]/", $password)) {
return false;
}
//If a space is found, return false.
if (strpos($password, " ") !== false) {
return false;
}
//Special characters are optional, so no checking.
//If nothing happened so far, the password is valid. Return true.
return true;
}
var_dump(
validate_password("test"), //False, no digits
validate_password("test123 test"), //False, space
validate_password("123456"), //False, no alphabet
validate_password("test1234") //True
);
perfekcyjna praca, dziękuję, chciałbym +100 :) Ci ale potrzebuje 15 reputacji i mam tylko 8, dziękuję jeszcze raz :) –
Albo jeszcze szybciej ... '/^(? = [^ 0-9 ] * [0-9]) (? = [^ Az] * [az]) (\ S +) $/i' – ridgerunner