过滤任何电子邮件地址

时间:2017-07-03 20:55:35

标签: regex

我有授权程序功能,需要使用通配符检查电子邮件规则,例如

  • 麦克 12 @ *。myapp.com
  • ρ* @ *。在
  • julia.admin@myapp。*

所以例如。

  • peter@gmail.com =>假的
  • peter@myapp.it =>真(第3条规则)
  • pete@someapp.in =>真(第二条规则)

我对如何最好地构建正则表达式有点困惑 - 或者可能还有其他开箱即用的解决方案? 感谢任何帮助! 感谢

2 个答案:

答案 0 :(得分:0)

试试这个正则表达式([a-zA-Z0-9-_\.]*)\@(.*?.in|.*?myapp.*)
演示https://regex101.com/r/D6thOr/1

答案 1 :(得分:0)

模式:

/^[^@]+@(?:(?:myapp\..+)|.+(?:\.in|myapp\.com))$/

Pattern Demo

测试案例:

  • user@fail.com #fail
  • user@myapp.pass #pass
  • user@pass.in #pass
  • user@pass.myapp.com #pass

我使用了非捕获组,但如果您愿意,可以使用捕获组来简化模式。

我订购了"替代品"为了提高效率,需要使用较短的不匹配模式。

出于速度原因,我还在@之前使用了否定字符类而不是点。