利用Python正则表达式模块,对邮箱帐号格式正确性校验(以QQ邮箱为例)

吐舌头

'''
非纯数字邮箱(@qq.com,@foxmail.com)??
a.1 您的邮箱帐号应该由a~z的英文字母(不区分大小写)开头;
a.2 可由英文字母、0~9的数字(但不能使用全数字)、点、减号或下划线组成;
a.3 长度为3~18个字符;
a.4 不能以点、减号或下划线结尾,不能出现连续两个或两个以上的点、减号或下划线。
纯数字邮箱(@qq.com)
b.1 5-10位纯数字
手机邮箱(@qq.com)
c.1 11位纯数字(1开头)
dassh原创 http://blog.csdn.net/dassh
'''
def _check_account_legal(*accounts):
    result = 0
    account_len = len(accounts)
    #a.1 a.2 a.4
    rule_one = "(^[a-zA-Z][\w\.-]+[a-zA-Z0-9]@(qq|foxmail)\.com$)"
    #b.1
    rule_two = "(^\d{5,10}@qq\.com$)"
    #c.1
    rule_three = "(^1\d{10}@qq\.com$)"
    for account in accounts:
        first_re = re.search(rule_one + '|' + rule_two + '|' + rule_three, account)
        if first_re:
            #a.4
            second_re = re.search('\.\.|--|__', account)
            if second_re is None:
                #a.3
                if 3 <= len(account.split('@')[0]) <= 18 :
                    result = result + 1
    return True if result == account_len else False


你可能感兴趣的:(python正则,邮箱格式校验)