我在尝试满足此正则表达式的要求时遇到了麻烦,如下所述。
^[A-Za-z0-9]{1,}|^[A-Za-z0-9]{1,}[\-\_]\.[a-zA-Z]{2,}@[A-Za-z0-9][\-\_]{5,}\.[a-zA-Z]{2,}$
" 您的电子邮件和重新输入的电子邮件不得为空,且必须包含acct@domain
表格:
acct
domain
@
示例有效的电子邮件地址:
a@aa.ca, a@aaAAA-c.cc_3.com
示例无效的电子邮件地址:
b@b, b@b.b, b@bb.bb!c
两个电子邮件地址必须相同"
答案 0 :(得分:3)
以下是可以验证所有标准的正则表达式,我希望它也更有效。
^(?![\W_])((?:([\w-]{2,})\.?){1,})(?<![\W_])@(?![\W_])(?=[\w.-]{5,})(?=.+\..+)(?1)(?<![\W_])$
请查看regex demo以获取详细概述。
答案 1 :(得分:1)
你的正则表达式可以大大简化(可能比这个例子更加简单),但是因为你的标准实际上比你的例子更复杂:
^[a-z]([\w-]*[a-z]|[\w-.]*[a-z]{2,}|[a-z])*@[a-z]([\w-]*[a-z]|[\w-.]*[a-z]{2,}|[a-z]){4,}?\.[a-z]{2,}$
示例:http://regex101.com/r/gE4wK2/2(请注意不区分大小写的选项)
然而,更大的问题在于您提供的有效样本中的差异。
帐户:强>
[a-z]
确保帐户中至少存在一个字符([\w-]*)
确保可以包含任何字母或连字符([a-z]|[a-z])*
确保最后一个字符(如果存在)是一个字母[\w-.]*[a-z]{2,}
确保如果有句号,则必须有两个字母。您已经可以看到a@aa.ca
之类的示例不应该匹配。
帐户与域名之间必须存在@符号
@
字面值。<强>域强>
(...big long expression...){4,}
确保在初始域名信函(共5个)之后有4个附加字符([\w-]*[a-z])
钉一个\.
[a-z]
确保域的第一个字符是字母[\w-.]*[a-z]{2,}
如果字符串中有句点,则必须跟随2个字母[a-z]{2,}$
确保域名期限后至少有两个字母所有这一切,我仍然主张使用复杂的正则表达式来验证电子邮件地址:阅读http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/
最后,检查一下超级基本的电子邮件地址,例如
^.*?@.*?\..*?$
,然后发送该内容!