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

使用JS正则提取有效邮箱地址,如何修正匹配末尾连字符的问题

修正方案

你原有正则出错的核心原因是host部分的后缀匹配规则没有限制每一段域名必须以字母结尾,导致末尾带连字符的无效域名也能被匹配。

修正后的正则

/(?<!\S)[a-z0-9]+(?:[._-][a-z0-9]+)*@[a-z]+(?:-[a-z]+)*(?:\.[a-z]+(?:-[a-z]+)*){1,}(?!\S)/g

规则匹配说明

  1. user部分 [a-z0-9]+(?:[._-][a-z0-9]+)*
  • 开头和结尾必须为字母/数字,中间可插入单个./_/-,避免出现连续特殊字符、首尾带特殊字符的无效user格式,完全符合要求。
  1. host部分 [a-z]+(?:-[a-z]+)*(?:\.[a-z]+(?:-[a-z]+)*){1,}
  • 每一段域名都以字母开头、字母结尾,中间仅可插入单个连字符-
  • 后缀段至少出现1次,保证host总段数≥2,完全满足你的规则要求,彻底排除末尾带连字符的无效匹配。
  1. 前后的(?<!\S)和(?!\S)断言保证匹配的是独立完整的邮箱,不会从普通文本中错误截取邮箱片段。

匹配验证

  • 有效匹配项:
    • s.kiki@hotmail.co.uk ✅
    • no-reply@github-bg.com.uk.bg ✅
    • no_reply@github-bg.com.uk.bg ✅
  • 无效排除项:
    • suport@github.com- ❌(后缀末尾带连字符)
    • test@-test.com ❌(主域名开头带连字符)
    • test.@test.com ❌(user末尾带特殊字符)

内容的提问来源于stack exchange,提问作者Маргарита Георгиева

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 09:48:02