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

如何创建符合特定特殊字符规则的邮箱验证正则表达式?

邮箱正则表达式问题解析与修正

需求说明

@符号之前仅允许.和_作为特殊字符;@符号之后仅允许-和.作为特殊字符。

原正则表达式

^[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\_[A-Za-z0-9]+)*@[A-Za-z0-9]+(\-[A-Za-z0-9]+)*(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$

正确邮箱格式示例

  • mymail@gmail.com
  • my_mail@gmail.com
  • my_mail.mail_mail@gmail.com
  • my.mail_mail.mail@gmail.com
  • my.mail_gmail.mail@gmail.com
  • mymail@gmail.co.id
  • mymail@gm-ail.co.id

错误邮箱格式示例

  • .mail@gmail
  • mail.@gmail
  • mail_@gmail
  • _mail@gmail
  • mail@-gmail
  • mail@gmail-

当前存在的问题

原正则无法匹配部分符合要求的邮箱,例如:

  1. mail.mail_mail.mail@gmil.com
  2. mail_mail.mail@gmial.com

问题出在@之前的正则片段:

^[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\_[A-Za-z0-9]+)*

修改后的正则表达式

^[a-zA-Z0-9]+([._][a-zA-Z0-9]+)*@[A-Za-z0-9]+(\-[A-Za-z0-9]+)* (\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$

修正有效性判断

修改后的正则可以解决原问题,但需要去掉@后部分的多余空格,最终正确正则如下:

^[a-zA-Z0-9]+([._][a-zA-Z0-9]+)*@[A-Za-z0-9]+(\-[A-Za-z0-9]+)*(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$

原因说明

原@前的正则逻辑存在局限:它要求先连续出现任意次数的.+字符组合,再连续出现任意次数的_+字符组合,无法处理.和_交替出现的场景(比如mail.mail_mail.mail这种穿插使用两种符号的格式)。

修改后的^[a-zA-Z0-9]+([._][a-zA-Z0-9]+)*将.和_合并到同一个字符组[._]中,允许两种符号交替跟随字符出现,完全覆盖所有符合要求的本地部分格式,包括之前无法匹配的案例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:34:58