一、python 判断密码连续,重复,大小写、数字、符号混合密码复杂度要求

1. 运行环境

python 3.6.8

2. 密码必须包含大小写、数字、特殊符号中的3种且长度为8-16位

def verifyPassword(pwd: str):
'''
验证密码复杂度要求,密码必须由大小写字母、数字和特殊字符!@#$%^&*组成
pwd: 要验证的密码
'''
# 必须4种全部包含
# pattern = r'^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*,\.])[0-9a-zA-Z!@#$%^&*,\\.]{8,16}$' # 包含3种即可
pattern = r'^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_]+$)(?![a-z0-9]+$)(?![a-z\W_]+$)(?![0-9\W_]+$)[a-zA-Z0-9\W_]{8,16}$'
res = re.search(pattern, pwd)
return True if res else False

测试结果

============Start================
{'12345678': False}
{'asdfghjk': False}
{'ASDFGHJK': False}
{'!@#$%^&*': False}
{'12345com': False}
{'Denniscom': False}
{'DENNIS!@#$': False}
{'Dennis.com': True}
{'d1nnis.com': True}
{'123&^FGS': True}
{'QWEasd1234': True}
{'QWEasd#$%^': True}
{'D1nnis.com': True}
{'Aa1': False}
{'Aa1234567890.com': True}
{'Aa1234567890.com.cn': False}
============End================

3. 密码不能3位及以上连号字母或数字

def isSeries(pwd: str, seriesCount: int = 3):
'''
判断密码是否连续
pwd: 密码
seriesCount: 连续个数
'''
if pwd and (len(pwd) > 0):
# 自身算起
ascSeriesCount = 1
descSeriesCount = 1
# 存在顺序型的连续性的字符串
for i in range(len(pwd)):
currentCharCode = pwd[i]
if i == 0:
prevCharCode = ""
else:
prevCharCode = pwd[i - 1]
if currentCharCode == chr(ord(prevCharCode) + 1):
ascSeriesCount += 1
if ascSeriesCount == seriesCount:
return True
else:
ascSeriesCount = 1 # 存在逆序性的连续性的字符串*/
for i in range(len(pwd)):
currentCharCode = pwd[i]
if (i - 1) >= 0:
prevCharCode = pwd[i - 1]
else:
prevCharCode = ""
if chr(ord(currentCharCode) + 1) == prevCharCode:
descSeriesCount += 1
if descSeriesCount == seriesCount:
return True
else:
descSeriesCount = 1
return False

测试结果

============Start================
{'abc': True}
{'abcd': True}
{'ABC': True}
{'ABCD': True}
{'aBc': False}
{'aBcd': False}
{'cba': True}
{'dcba': True}
{'CBA': True}
{'DCBA': True}
{'CbA': False}
{'DCbA': False}
{'123': True}
{'1234': True}
{'321': True}
{'AB': False}
{'BA': False}
{'aB': False}
{'Ba': False}
{'abdce': False}
============End================

4. 密码不能连续3个及以上重复字符

def isRepeat(pwd: str, repeatCount: int = 3):
'''
判断密码是否包含重复字段
'''
if pwd and (len(pwd) > 0):
ascRepeatCount = 1
for i in range(len(pwd)):
currentChar = pwd[i]
if i == 0:
prevChar = ""
else:
prevChar = pwd[i - 1]
if currentChar == prevChar:
ascRepeatCount += 1
if ascRepeateCount == repeatCount:
return True
else:
ascRepeatCount = 1
return False

测试结果

============Start================
{'112234556': False}
{'aaqwe': False}
{'!@@#$%^&*': False}
{'1222345com': True}
{'Dennnniscom': True}
{'asd000qweh': True}
============End================

5. 密码不能包含姓名大小写全拼

# 该方法需要引入pypinyin包
from pypinyin import lazy_pinyin def isContainsName(pwd: str, name: str):
'''
判断密码中是否包含名称大小写全拼
pwd: 密码
name: 名称汉字
'''
if name == None or name == '':
return False nameArr = lazy_pinyin(name)
pinyinName = ''.join(nameArr)
for item in nameArr:
pinyinName += item
if pwd.lower().__contains__(pinyinName.lower()):
return True
else:
return False

测试结果

pwd = 'zhangsan6123'

============Start================
{'zhangsan': True}
{'张三': True}
{'lisi': False}
{'李四': False}
{'': False}
============End================

6. 汉字转拼音

# 该方法需要引入pypinyin包
from pypinyin import lazy_pinyin
nameArr = lazy_pinyin(item)

测试结果

============Start================
{'还行': ['hai', 'xing']}
{'银行': ['yin', 'hang']}
{'行': ['xing']}
{'长': ['zhang']}
{'行长': ['xing', 'zhang']}
{'长大': ['zhang', 'da']}
{'长度': ['chang', 'du']}
{'行不行': ['xing', 'bu', 'xing']}
{'中国银行很行': ['zhong', 'guo', 'yin', 'hang', 'hen', 'xing']}
{'zhongguo': ['zhongguo']}
============End================

python判断密码连续,重复,大小写、数字、符号混合密码复杂度要求的更多相关文章

  1. Python判断unicode是汉字,数字,英文,或者其他字符

    功能: 判断unicode是否是汉字,数字,英文,或者是否是(汉字,数字和英文字符之外的)其他字符. 全角.半角符号相互转换. 全角.半角? 全角--指一个字符占用两个标准字符位置. 汉字字符和规定了 ...

  2. Python 使用正则表达式验证密码必须包含大小写字母和数字

    校验密码是否合法的程序. 输入一个密码 1.长度5-10位 2.密码里面必须包含,大写字母.小写字母和数字 3.最多输入5次 ===================================== ...

  3. python判断unicode是否是汉字,数字,英文,或者其他字符

    下面这个小工具包含了 判断unicode是否是汉字,数字,英文,或者其他字符. 全角符号转半角符号. unicode字符串归一化等工作. 还有一个能处理多音字的汉字转拼音的程序,还在整理中. #!/u ...

  4. (python)剑指Offer 面试题51:数组中重复的数字

    问题描述 在长度为n的数组中,所有的元素都是0到n-1的范围内. 数组中的某些数字是重复的,但不知道有几个重复的数字,也不知道重复了几次,请找出任意重复的数字. 例如,输入长度为7的数组{2,3,1, ...

  5. (python)剑指Offer:数组中重复的数字

    问题描述 在长度为n的数组中,所有的元素都是0到n-1的范围内. 数组中的某些数字是重复的,但不知道有几个重复的数字,也不知道重复了几次,请找出任意重复的数字. 例如,输入长度为7的数组{2,3,1, ...

  6. 通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile

      通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁 ...

  7. 通过游戏学python 3.6 第一季 第八章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数

    通过游戏学python 3.6 第一季 第八章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账 ...

  8. 通过游戏学python 3.6 第一季 第七章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号

    #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误 ...

  9. 通过游戏学python 3.6 第一季 第六章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改 可复制直接使用 娱乐 可封装 函数

    #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优 ...

  10. 【剑指Offer】数组中重复的数字 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 Set 快慢指针 日期 题目地址:https://leetcod ...

随机推荐

  1. 【CVE-2022-0543】Redis Lua沙盒绕过命令执行复现

    免责声明: 本文章仅供学习和研究使用,严禁使用该文章内容对互联网其他应用进行非法操作,若将其用于非法目的,所造成的后果由您自行承担,产生的一切风险与本文作者无关,如继续阅读该文章即表明您默认遵守该内容 ...

  2. 你听说过OTA吗?

    以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/M660Sc4ey1SxCpRT6vcM9g what? 不知有多少 ...

  3. JUnit 5 单元测试教程

    点赞再看,动力无限. 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. 在软件开发过程中,我们通常都需要测试 ...

  4. 关于linux mint(nemo)添加右键菜单修改方法

    前言 其实在 linux mint 桌面上右键弹出的菜单,以及在资源管理器 nemo 中右键菜单,这些都是基于 nemo,进行的操作,所以更改右键菜单也就是更改nemo的配置文件 操作 在目录 /ho ...

  5. vulnhub靶场之Chronos:1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:Chronos,下载地址:https://download.vulnhub.com/chronos/Chronos.ova,下载后直接vbox打 ...

  6. Flink同步Kafka数据到ClickHouse分布式表

    公众号文章都在个人博客网站:https://www.ikeguang.com/ 同步,欢迎访问. 业务需要一种OLAP引擎,可以做到实时写入存储和查询计算功能,提供高效.稳健的实时数据服务,最终决定C ...

  7. JavaScript中的Error错误对象与自定义错误类型

    Error Error是JavaScript语言中的一个标准的内置对象,专门用于处理JS开发中的运行时错误. 当我们的JS代码在运行过程中发生错误的话,就会抛出Error对象,整个程序将会中断在错误发 ...

  8. 【实战】Hadoop安装01-伪分布式-Pseudo

    Hadoop安装-伪分布式-Pseudo 〇.所需资料 一.前置环境安装 1.包含内容 (1)安装 虚拟机安装.系统安装 (2)配置 ip.host.主机名配置 关闭防火墙及selinux SSH免密 ...

  9. 【笔面试题目】Java集合相关的面试题-List、Map、Set等

    一.List 1.subList 不会返回新的list对象--与String的subString不同 返回原来list的从[fromIndex,toIndex)之间这一部分的视图,实际上,返回的lis ...

  10. Node.js躬行记(25)——Web自动化测试

    网页在提测流转给 QA 后,如何能帮他们更有效而准确的完成测试,是我一直在思考的一个问题. QA 他们会对网页编写测试用例,在提测之前会让我们将优先级最高的用例跑通,这在一定程度上能够避免频繁的返工, ...