首先分析emali地址的规则,以bill.gates@microsoft.com为例,可以将一个email地址分为三部分。第一部分是bill.gate,它的规则可以描述为正数个字母、数字和.的组成。第二部分为固定字符@.第三部分以microsoft.com为例,它的规则可以描述为正数个字母数字+.com。
明确了规则,正则表达式可以如下所示
r'^[\d\w\.]+@[\d\w]+\.com$'
写成函数即为
def is_valid_email(addr): pattern=re.compile(r'^[\d\w\.]+@[\d\w]+\.com$') if re.match(pattern,addr): return True return False
进行测试
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')
结果输出ok,程序正确