强口令检测
写一个函数,它使用正则表达式,确保传入的口令字符串是强口令。强口令的定义是:长度不少于 8 个字符,同时包含大写和小写字符,至少有一位数字。你可能需要用多个正则表达式来测试该字符串,以保证它的强度
def qiangkouling():
'''
第七章 实践项目 强口令检测
写一个函数,它使用正则表达式,确保传入的口令字符串是强口令。强口令的定义是:长度不少于 8 个字符,同时包含大写和小写字符,至少有一位数字。你可能需要用多个正则表达式来测试该字符串,以保证它的强度。
:return:
'''
zifu = '01as7Fde'
result = ''
reg_num = re.compile(r'[0-9]+')
reg_zm = re.compile('[a-z]+')
reg_zmd = re.compile('[A-Z]+')
reg = re.compile(r'[^A-Za-z0-9]') # ^取反 不是数字、大小写字母的
if len(zifu) == 8: # 判断长度
if reg_num.search(zifu) is not None: # 判断是否含有数字
for num in reg_num.findall(zifu):
result = result + num
if reg_zm.search(zifu) is not None: # 判断是否含有小写字母
for zmx in reg_zm.findall(zifu):
result = result + zmx
if reg_zmd.search(zifu) is not None: # 判断是否含有大写字母
for zmd in reg_zmd.findall(zifu):
result = result + zmd
#方法一:
if len(result) == 8: # 判断result是否只含有大写和小写字符和一位数字
print('强口令:' + zifu)
else:
print('强口令必须有大写和小写字符,至少有一位数字')
# 方法二: #不需要for循环将值写入result,只需进行if判断
if reg.search(zifu) is None:
print('强口令:' + zifu)
else:
print('强口令必须有大写和小写字符,至少有一位数字')
else:
print('强口令必须包含大写字母')
else:
print('强口令必须包含小写字母')
else:
print('强口令必须包含数字')
else:
print('强口令长度不是8位')
strip()的正则表达式版本
写一个函数,它接受一个字符串,做的事情和 strip()字符串方法一样。如果只传入了要去除的字符串,没有其他参数,那么就从该字符串首尾去除空白字符。否则,函数第二个参数指定的字符将从该字符串中去除
def strip_re(char,recomp=''):
'''
第七章 实践项目 strip()的正则表达式版本
写一个函数,它接受一个字符串,做的事情和 strip()字符串方法一样。如果只传入了要去除的字符串,没有其他参数,那么就从该字符串首尾去除空白字符。否则,函数第二个参数指定的字符将从该字符串中去除
:return:
'''
if recomp =='':
reg=re.compile(r'^\s*|\s*$')
else:
reg = re.compile(r'^['+recomp+']*|['+recomp+']*$') #[] 定义字符分类;例如 字符分类[a-zA-Z0-9]将匹配所有小写字母、大写字母和数字。
reg = re.compile(r'^[{0}]*|[{0}]*$'.format(recomp)) #正则表达式传参的两种不同方式
return reg.sub('',char)