我使用以下脚本检查我的密码长度,大写,小写和数字。
如何更改它以使其检查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
}
?>
答案 0 :(得分:7)
您想要的正则表达式在
之下 $pattern = ' ^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$ ';
preg_match($pattern,$password);
答案 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)