Search code examples
phpregexpasswordsnon-alphanumeric

Regular Expression for a password with at least 8 characters and at least 1 non-alphanumeric character(s)


I am trying to make a check in PHP if a user changes their password their new password must be 8 or more characters and with at least 1 non-alphanumeric password. How should I check this and what would the regex be?

Checking the length is the easy part strlen >= 8. My problem is regular expressions. I really have no clue about regular expressions even after years of studying computer science.

Thanks


Solution

  • Try something like this to check if they used non-alphanumeric characters:

    if( !preg_match( '/[^A-Za-z0-9]+/', $password) || strlen( $password) < 8)
    {
        echo "Invalid password!";
    }
    

    The if statement will evaluate to true if the $password does not contain at least one of the characters not in the list (alphanumeric characters).