密码6-12字符1位数大写字母regex

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (43)

我试图用这个常规的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个字符,至少一个数字和至少一个大写字母。

如果密码类似于12你好相反,它与Hello12有人能帮忙吗?

提问于
用户回答回答于

试试这个:

最小6个字符

至少一个大写字符

至少一位数

表达:

"/^(?=.*?[0-9])(?=.*[A-Z]).{6,12}$/"
用户回答回答于

需要单独检查一下。

^(?=.*[A-Z])(?=.*\d).{6,12}$

(?=.*[A-Z])至少是一个大写字符。

(?=.*\d)至少有一个数字

.{6,12}是6-12个字符(不是新行)

^$是确保完整字符串匹配的锚点。

在你的正则表达式中你的角色类[A-Za-z0-9@]允许大写字符、小写、数字或@(这并不能确保有一个大写字符)。你也不需要strlen函数,如果使用此正则表达式。

扫码关注云+社区

领取腾讯云代金券