面试题答案
一键面试import re
def validate_email(email):
pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
return bool(re.match(pattern, email))
优化思路:
- 避免不必要的捕获组:在正则表达式中,没有使用
()
来创建捕获组,因为这里只是验证邮箱格式,不需要提取邮箱各部分内容,减少捕获组可以提高匹配效率。 - 字符集的简化:
- 用户名部分使用
[a-zA-Z0-9_.+-]
,涵盖了常见的用户名可用字符,既简洁又能满足需求。 - 域名部分
[a-zA-Z0-9-]
表示域名允许的字符,顶级域名部分[a-zA-Z0-9-.]
同样简洁地表示了顶级域名允许的字符。
- 用户名部分使用
- 使用
^
和$
:明确匹配从字符串开头到结尾,确保整个字符串符合邮箱格式,而不是仅字符串的一部分符合,提高匹配准确性。