【问题标题】:validating an email with regexp multiple conditions使用正则表达式多个条件验证电子邮件
【发布时间】:2019-09-06 14:20:15
【问题描述】:

我正在寻找一个有效的regexp 来满足我的电子邮件验证要求。试了好几次,还是有问题。

这是我的尝试:.*@[^\W_]+(?:[\w-]*[^\W_])

需要符合:

xxx@_domain.com => invalid @ starts with _
xxx@domain_.com => invalid domain ends with _ 
xxx@-domain.com => invalid @ starts with - ( hypen)
xxx@domain-.com => invlaid domain ends with - (hypen)
-xxx@domain.in => invalid domain start with - (hypen)
xxx@111.com => invalid domain only contains numbers
xxx@1and1.com => valid domain contains both number and chars
xxx@us.com => valid
xxx@my-india.com => valid
xxx@me2.com => valid
xxx@tv.com =>
xxx@abc_efg.com =>  valid _ inside the chars
_muth@tamil.com => valid _ start with 

有人帮帮我吗?

【问题讨论】:

标签: javascript regex


【解决方案1】:

根据您的具体要求,您可能会使用

^\w+(?:[_-][^\W_]+)*@(?![\d._-]+\.[^\W_]+$)[^\W_]+(?:[_-][^\W_]+)*\.[^\W_]{2,3}$

说明

  • ^ 字符串开始
  • \w+ 匹配 1+ 个单词字符
  • (?:[_-][^\W_]+)* 重复 0+ 次匹配 -- 和 1+ 单词字符,_ 除外
  • @ 字面匹配
  • (?! 负前瞻,断言右边的不是
    • [\d._-]+\.[^\W_]+$ 仅断言数字或 ._- 中的任何一个直到字符串的末尾
  • ) 关闭前瞻
  • [^\W_]+ 匹配 1+ 次除 _ 之外的单词字符
  • (?:[_-][^\W_]+)* 重复 0+ 次匹配 -- 和 1+ 单词字符,_ 除外
  • \.[^\W_]{2,3} 匹配 . 和 2-3 次除 _ 之外的单词字符
  • $字符串结束

Regex demo

【讨论】:

  • 是的,完美。感谢您提供详细信息
【解决方案2】:

如果此电子邮件值来自 HTML 输入,我认为最好的方法是将type 属性设置为电子邮件并让浏览器完成艰苦的工作,但如果不是这种情况,您可以检查@ 987654321@,已经创建了一些社区正则表达式,这是一个非常有用的工具

【讨论】:

  • 他肯定要检查一些在线正则表达式测试器。他的表情与提供的任何电子邮件都不匹配。
  • 我所说的“匹配失败”是指它几乎可以匹配任何字符串。
猜你喜欢
  • 2017-11-29
  • 2012-01-01
  • 2020-11-04
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多