You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

优化Python中基于requests模块的EMAIL_REGEX邮箱验证规则

解决Web Scraping中邮箱匹配的无效内容问题

针对性正则方案

直接在现有正则基础上加入负向先行断言,排除结尾是图片后缀的无效字符串:

EMAIL_REGEX = r'[\w.+-]+@(?!.*\.(png|jpg|jpeg|gif|bmp)$)[\w-]+\.[\w.-]+'

正则各部分说明

  • [\w.+-]+: 匹配邮箱用户名部分,覆盖字母、数字、下划线、点、加号、减号这些合法字符
  • @: 固定匹配@符号
  • (?!.*\.(png|jpg|jpeg|gif|bmp)$): 关键的排除逻辑——如果字符串结尾是指定的图片后缀(png/jpg等),就不匹配。你可以根据需要添加更多要排除的后缀,比如webp
  • [\w-]+\.[\w.-]+: 确保域名部分包含至少一个点,彻底解决swiper@9这类无有效域名的无效匹配

验证效果

  • 有效邮箱info@domain.com:正常匹配
  • 无效文件名Certified-Support-Partner-White@2x-2048x612.png:因为结尾是.png,被断言排除,不会匹配
  • 无效字符串swiper@9:域名部分没有点,不满足正则要求,不会匹配

进阶优化(可选)

如果想要更严格的域名校验,确保顶级域名是至少2个字母的合法后缀(避免奇葩数字后缀),可以用这个版本:

EMAIL_REGEX = r'[\w.+-]+@(?!.*\.(png|jpg|jpeg|gif|bmp)$)[\w-]+\.[a-zA-Z]{2,}([\w.-]*[a-zA-Z])?'

补充建议

如果遇到极少数正则没覆盖的无效项,可以配合简单的字符串过滤兜底,比如:

valid_emails = [email for email in matched_emails if not any([suffix in email for suffix in ['@2x', '@3x']])]

但上面的正则已经能解决绝大多数核心问题。

内容的提问来源于stack exchange,提问作者Bram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 19:53:33