python正则表达式(三)

强口令检测

写一个函数,它使用正则表达式,确保传入的口令字符串是强口令。强口令的定义是:长度不少于 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值