python 正则匹配含有大写字母、小写字母、数字、特殊字符 密码
正则表达式:
^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)^.{8,}$
表达式说明:
^匹配开头
(?![A-Za-z0-9]+$)匹配后面不全是(大写字母或小写字母或数字)的位置,排除了(大写字母、小写字母、数字)的1种2种3种组合
(?![a-z0-9\\W]+$)匹配后面不全是(小写字母或数字或非字母数字)的位置,排除了(小写字母、数字、特殊符号)的1种2种3种组合
(?![A-Za-z\\W]+$)匹配后面不全是(大写字母或小写字母或非字母数字)的位置,排除了(大写字母、小写字母、特殊符号)的1种2种3种组合
(?![A-Z0-9\\W]+$)匹配后面不全是(大写字母或数字或非字母数字),排除了(大写字母、数组、特殊符号)的1种2种3种组合
^.匹配除换行符以外的任意字符,因为排除了上面的组合,所以就只剩下了4种都包含的组合了
{8,}8位以上
$匹配字符串结尾
代码:
import re
def check_pwd(string):
pattern = r'^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)^.{8,}$'
res = re.search(pattern, string)
print(res)
if res:
return "OK"
else:
return "NO"
if __name__ == '__main__':
a = 'ABCabc012!@#'
print(check_pwd(b))