正如正则表达式库中所述,很难真正验证电子邮件地址。但是,从上述网站获取的以下内容会做得很好。
官方标准称为 RFC 2822。它描述了有效电子邮件地址必须遵守的语法。您可以(但您不应该继续阅读)使用这个正则表达式来实现它:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
简单的正则表达式:
\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
验证电子邮件地址的权衡:
是的,有一大堆我的宠物正则表达式不匹配的电子邮件地址。最常引用的示例是 .museum 顶级域上的地址,它比我的正则表达式允许顶级域的 4 个字母长。我接受这种权衡,因为使用 .museum 电子邮件地址的人数极少。我从来没有抱怨过 JGsoft 网站上的订单或时事通讯订阅表格拒绝了 .museum 地址(他们会这样做,因为他们使用上述正则表达式来验证电子邮件地址)。
但是,如果您只想要您的特定域,这绝对是一种可能性,但不建议拒绝电子邮件地址,因为它无法通过这些正则表达式。
采用上述方法,您可以简单地使用以下正则表达式进行验证:
\b[A-Z0-9._%+-]+@(camel|mel|camelofegypt)\.com\b
或者:
^[A-Z0-9._%+-]+@(camel|mel|camelofegypt)\.com$
这两个正则表达式之间的区别很简单,第一个正则表达式将匹配包含在较长字符串中的电子邮件地址。而第二个正则表达式只有在整个字符串是电子邮件地址时才会匹配。
JavaScript 正则表达式:
/\b[A-Z0-9._%+-]+@(camel|mel|camelofegypt)\.com\b/i
或者:
/^[A-Z0-9._%+-]+@(camel|mel|camelofegypt)\.com$/i
i
特别注意:您应该允许使用参数的正则表达式不区分大小写,因为John@CAMEL.com
与john@camel.com
. 我在上面的正则表达式中做了什么。