我尝试使用此常规exp检查用户密码:
$regex='/^(?=.*[A-Za-z0-9@])(?=.*\d)[a-zA-Z0-9@]{6,12}$/';
if(isset($_POST['password']) && strlen($_POST['password'])>=6 &&
strlen($_POST['password']<=12) && preg_match($regex, $_POST['password'])){
echo 'ok';
}else{echo 'invalid password';}
我希望密码为6到12个字符,至少一个数字和至少一个大写字母。
如果密码类似 12Hello ,它不起作用,而不是 Hello12 ,有人可以帮忙吗?
由于
答案 0 :(得分:3)
你的角色类太广了。你需要单独检查一下。
^(?=.*[A-Z])(?=.*\d).{6,12}$
(?=.*[A-Z])
至少是一个大写字符
(?=.*\d)
至少有一个号码
并且.{6,12}
是6-12个字符(不是新行)
^$
是确保完整字符串匹配的锚点。
在你的正则表达式中,你的角色类[A-Za-z0-9@]
允许使用大写字母,小写,数字或@
(它不能确保你有1个大写字符)。如果使用此正则表达式,您也不需要strlen
函数。
答案 1 :(得分:0)
试试这个: -
最少6个字符
Atleast 1大写字符
至少一位数
表达式:
"/^(?=.*?[0-9])(?=.*[A-Z]).{6,12}$/"