检查较低的数字和符号的密码

时间:2011-04-07 04:54:32

标签: php regex

我使用以下脚本检查我的密码长度,大写,小写和数字。

如何更改它以使其检查FOR符号而不是符号?

<?php

    $password = 'afsd323A';
    if( 
        //I want to change this first line so that I am also checking for at least 1 symbol.
            ctype_alnum($password) // numbers & digits only 
        && strlen($password)>6 // at least 7 chars 
        && strlen($password)<21 // at most 20 chars 
        && preg_match('`[A-Z]`',$password) // at least one upper case 
        && preg_match('`[a-z]`',$password) // at least one lower case 
        && preg_match('`[0-9]`',$password) // at least one digit 
        )
    { 
        echo 'valid';

    }
    else
    { 
        echo 'not valid';// not valid 
    }     
?> 

3 个答案:

答案 0 :(得分:7)

您想要的正则表达式在

之下
   $pattern = ' ^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$ ';

   preg_match($pattern,$password);

DEMO

答案 1 :(得分:0)

测试输入是否包含6个或更多ASCII字符。输入必须包含至少一个大写字母,一个小写字母和一个数字。

if(preg_match('/\A(?=[\x20-\x7E]*?[A-Z])(?=[\x20-\x7E]*?[a-z])(?=[\x20-\x7E]*?[0-9])[\x20-\x7E]{6,}\z/' $password))
    echo("valid password");

答案 2 :(得分:0)

您可以确定有效符号列表:

preg_match('`[\$\*\.,+\-=@]`',$password)

或者你可以找到任何不是alnum的东西:

preg_match('`[^0-9a-zA-Z]`',$password)