Create preg_match for password validation allowing (!@#$%)

后端 未结 9 948
耶瑟儿~
耶瑟儿~ 2020-12-04 23:14

I would like to create a preg_match function to validate my passowrds, but I\'m not sure how to write it to allow the following special characters to be used: <

9条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-04 23:40

    I liked r3bel's answer, so I had a play with it and ended up with the following as a password-checking function:

    function password_strength_check($password, $min_len = 8, $max_len = 70, $req_digit = 1, $req_lower = 1, $req_upper = 1, $req_symbol = 1) {
        // Build regex string depending on requirements for the password
        $regex = '/^';
        if ($req_digit == 1) { $regex .= '(?=.*\d)'; }              // Match at least 1 digit
        if ($req_lower == 1) { $regex .= '(?=.*[a-z])'; }           // Match at least 1 lowercase letter
        if ($req_upper == 1) { $regex .= '(?=.*[A-Z])'; }           // Match at least 1 uppercase letter
        if ($req_symbol == 1) { $regex .= '(?=.*[^a-zA-Z\d])'; }    // Match at least 1 character that is none of the above
        $regex .= '.{' . $min_len . ',' . $max_len . '}$/';
    
        if(preg_match($regex, $password)) {
            return TRUE;
        } else {
            return FALSE;
        }
    }
    

    Max/Min lengths are default or adjustable, each requirement is default on, but can be switched off, and I wanted to support any symbols so the last requirement is "anything that isn't one of the above types", rather than a fixed set of symbols.

提交回复
热议问题