密码的正则表达式:至少3位数/更低/更高

时间:2016-06-06 16:56:49

标签: php regex validation passwords

我试图创建一个验证以下条件的正则表达式

  1. 最小*长度
  2. Min *小写
  3. Min *大写
  4. 最小*特殊字符
  5. 我已经有了这个

    ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\S+$).{8,}$
    
    ^(?=.*[0-9]) // At least 1 digits
    (?=.*[a-z]) // At least 1 lower case
    (?=.*[A-Z]) // At least 1 upper case
    (?=.*[@#$%^&+=]) // At least 1 special character
    .{8,}$ // length 8
    

    问题是我需要在字符串的任何位置验证至少3位数/更低/更高。

    我需要添加什么才能使我的RE成为可能?我试图使用(?=.*[a-z]{3,}),但只允许连续的小写字母...

2 个答案:

答案 0 :(得分:0)

与正则表达式相比,有更简单的方法可以做到这一点。例如,可以使用len(password) >= min_length解析最小长度。同样,可以使用sum(password.count(let) for let in ["a", "b", "c" ... "z"]) >= min_lower_case解析最小数量的小写字母。

答案 1 :(得分:0)

您可以使用以下正则表达式

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=(?:.*[\da-zA-Z]){3})\S{8,}$

Regex explanation here.

Regular expression visualization