Discuss / Python / 两个放一起吧

两个放一起吧

Topic source

第二个校验了是不是邮箱名

#!/usr/bin/python# -*- coding: UTF-8 -*-import re


def is_valid_email(addr):
    addr_match_str = re.compile(r'^[a-zA-Z][\w.]{0,30}@\w+\.[a-zA-Z]{2,10}$')
    #    addr_match_str = re.compile(r'^[a-zA-Z][\w.-]{0,30}@\w+\.[a-zA-Z]{2,10}$')
    #    事实上,email是允许在名称中出现‘-’连接号的,所以普适的表达应该是这样的\,
    assert isinstance(addr, str)
    return addr_match_str.match(addr)


def name_of_email(addr):
    assert isinstance(addr, str)
    try:
        return re.match(r'<([\w\s]+)>\s?([a-zA-Z][\w.]{0,30})@(\w+\.[a-zA-Z]{2,10})', addr).group(1)
    except AttributeError:
        try:
            return re.match(r'([a-zA-Z][\w.]{0,30})@(\w+\.[a-zA-Z]{2,10})', addr).group(1).replace('.', ' ')
            #return re.match(r'([a-zA-Z][\w.]{0,30})@(\w+\.[a-zA-Z]{2,10})', addr).group(1).replace('.' or '_', ' ').title()
            #将姓名格式化将.替换为空格,然后对每个单词第一个字母大写处理,如bill.gates --> Bill Gates
        except AttributeError:
            print('不是邮箱名或格式错误')


# 测试1:
assert is_valid_email('someone@gmail.com')
assert is_valid_email('bill.gates@microsoft.com')
assert not is_valid_email('bob#example.com')
assert not is_valid_email('mr-bob@example.com')
print('ok')

# 测试2:
assert name_of_email('<Tom Paris> tom@voyager.org') == 'Tom Paris'
assert name_of_email('tom@voyager.org') == 'tom'
print('ok')


  • 1

Reply