首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex格式的电子邮件验证

问Regex格式的电子邮件验证
EN

Stack Overflow用户
提问于 2019-01-28 08:21:48
回答 1查看 547关注 0票数 1

我试图为电子邮件验证构建一个正则表达式,我还有几个条件需要检查:

  1. 允许:大写和小写英文字母,数字0到9
  2. 允许:"_“、"-”、“.”、“@”和“‘’”;

3.a.“人物”。如果不是第一个或最后一个字符,则允许提供。

3.b.".“不连续出现两次或两次以上

3.c.".“必须在域名中至少出现一次。

  1. 不应包含“.@”或“@”。
  2. 不应该以“”开头。
  3. “@”必须出现一次
  4. 在域名中,“.”之后的字符串长度应该至少有2个字符。
  5. 在域名中不允许前导"_“

我创建了以下正则表达式:

代码语言:javascript
复制
^[a-zA-Z0-9_'-]{1}[a-zA-Z0-9._'-]*([^.]@[^._])([a-zA-Z0-9_.'-])+[.]{1}[a-zA-Z0-9_'-]{2,}$ 

我没有涵盖所有章节,不包括3.b节。

有效电子邮件示例: ya.ll.t.j@gg.cc无效电子邮件示例: ya..l.f@dd.cc,y.s.sss...@kk.dd

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-28 08:38:15

在模式开始时,要对.*\.{2}进行负面展望,以确保在一行中不会有两个.:

代码语言:javascript
复制
(?!.*\.{2})

还需要进行一些修复和优化。通过在字符串开始时对(单个) .使用负前瞻,您可以避免重复字符集两次(因为第一个与第二个相同,只是没有.)。

仅负字符集就可以匹配集合中没有的任何字符--例如,在[^.]之前,您的@可以匹配换行符,这显然是不可取的。相反,要确保@之前的最后一个字符不是.,请使用另一个字符集:

代码语言:javascript
复制
^(?!.*\.{2})(?!\.)[a-z0-9_.'-]*[a-z0-9_'-]@

(在现代环境中,您可以在.上反向查找@,类似于第一种技术,以避免重复类似的字符集,但JS的查找功能还不是到处都支持)

同时使用不区分大小写的标志,以避免在任何地方都使用[a-zA-Z。全文:

代码语言:javascript
复制
^(?!.*\.{2})(?!\.)[a-z0-9_.'-]*[a-z0-9_'-]@(?!_)(?:[a-z0-9_'-]+\.)+[a-z0-9_'-]{2,}$

https://regex101.com/r/tZ7LHt/2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54397942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档