Preg_match pour tous les caractères spéciaux, vérification de mot de passe

Ok, donc je suis en train d'écrire un vérificateur de mot de passe pour notre stratégie de mot de passe qui nécessite 3 des 4 grandes classifications. Où je vais avoir des problèmes avec, est le caractère spécial de match.

Voici ce que j'ai à ce jour:

private function PasswordRequirements($ComplexityCount) {
    $Count = 0;
    if(preg_match("/\d/", $this->PostedData['password']) > 0) {
        $Count++;
    }
    if(preg_match("/[A-Z]/", $this->PostedData['password']) > 0) {
        $Count++;
    }
    if(preg_match("/[a-z]/", $this->PostedData['password']) > 0) {
        $Count++;
    }
    //This is where I need help
    if(preg_match("/[~`!@#$%^&*()_-+=\[\]{}\|\\:;\"\'<,>.]/", $this->PostedData['password']) > 0) {
        $Count++;
    }

    if($Count >= $ComplexityCount) {
        return true;
    } else {
        return false;
    }
}

Donc, fondamentalement, ce que je fais est la vérification de la chaîne pour chaque cas, des chiffres, des majuscules, des minuscules et des caractères spéciaux. Nous n'avons pas de restrictions sur n'importe quel caractère spécial et j'ai aussi besoin de caractères unicode. Le \W dans ce cas ou cela serait-il inclure le nombre de nouveau? Je ne peux pas trouver une documentation sur \W, donc je suis pas clair sur cette partie.

Personne ne sait d'un simple regexp qui couvrirait tous les caractères spéciaux et des caractères unicode qui ne comprennent pas les chiffres et les lettres?

Chacun est libre d'utiliser ce que je pense plus que peu de gens ont été à la recherche pour cela.

Voici une page qui explique certaines de vos spéculations: regular-expressions.info/reference.html

OriginalL'auteur JeffBaumgardt | 2011-11-08