我正在使用此表达式来验证电子邮件地址:
"^[_a-z0-9-]+(.[a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$"
我注意到为了验证电子邮件地址,我需要在@符号前加上至少3个字符。这是一个要求吗?如果我只想在@符号前面有一个或两个字符的电子邮件地址怎么办?
答案 0 :(得分:9)
完全有可能只有一个字符的电子邮件地址。所有指南都在RFC822中定义:http://www.ietf.org/rfc/rfc0822.txt?number=822
必要的REGEX:http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
答案 1 :(得分:1)
你的正则表达式很糟糕。你真的应该改变它。即使Microsoft提供了更灵活的变体:
"^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$"
是的,很长。但是你应该编写好的程序,而不是快速开发的程序。
答案 2 :(得分:0)
0 (如果您不计算双引号)。如果这样做,则最低为1。
“”“ @ example.com
a@example.com
Mailbox = Local-part "@" ( Domain / address-literal )
Local-part = Dot-string / Quoted-string
; MAY be case-sensitive
Dot-string = Atom *("." Atom)
Atom = 1*atext
Quoted-string = DQUOTE *QcontentSMTP DQUOTE
答案 3 :(得分:-2)
我继续前进并决定使用这个:
"^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$"
它允许我为本地部分输入1个或多个字符。