2010-01-21 77 views

回答

0

在任何情况下,电子邮件地址都不允许使用逗号。如果您输入不带逗号的用户名,会发生什么情况?

+0

名未逗号将正常工作对我来说。 我想知道在验证电子邮件时应该禁止的所有可能的字符 – user255818 2010-01-21 13:54:43

0

阅读RFC 2822为完整的电子邮件地址的语法。如果你通过BNF工作,你会发现"@,@"@foo.bar是非常好的,如果不寻常的话。

atext   =  ALPHA/DIGIT/; Any character except controls, 
         "!"/"#"/ ; SP, and specials. 
         "$"/"%"/ ; Used for atoms 
         "&"/"'"/
         "*"/"+"/
         "-"/"/"/
         "="/"?"/
         "^"/"_"/
         "`"/"{"/
         "|"/"}"/
         "~" 

atom   =  [CFWS] 1*atext [CFWS] 

dot-atom  =  [CFWS] dot-atom-text [CFWS] 

dot-atom-text =  1*atext *("." 1*atext) 

和3.4.1节:你问的规则,不过,可以在3.2.4节找到

addr-spec  =  local-part "@" domain 

local-part  =  dot-atom/quoted-string/obs-local-part 

domain   =  dot-atom/domain-literal/obs-domain 

如果您在local-partdomain忽略一切,但dot-atom规则,你会匹配共同或花园地址。有可能你的asp.net控件不接受所有有效的RFC2822地址,所以你应该检查该文档。

您可能会执行类似于“%<”十六进制代码>“的技巧,将有效(或不是)电子邮件地址转换为您的控件可以接受的用户名参数。

O'Reilly出版的Mastering Regular Expressions用于对邮件地址的一个巨大的单页正则表达式(主要是正确的),但它的消失在第3版)