第二个校验了是不是邮箱名
#!/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')
Sign in to make a reply
忆往昔念往昔往昔不复悔不当初
第二个校验了是不是邮箱名