【发布时间】:2010-01-21 13:47:24
【问题描述】:
我正在使用 asp.net memebrlogin_control 并收到异常“参数'用户名'不能包含逗号。参数名称:用户名”。我在此使用 emailID 作为用户名
我怎样才能消除这个错误,我也想知道应该禁止验证电子邮件地址的字符列表是什么。
【问题讨论】:
我正在使用 asp.net memebrlogin_control 并收到异常“参数'用户名'不能包含逗号。参数名称:用户名”。我在此使用 emailID 作为用户名
我怎样才能消除这个错误,我也想知道应该禁止验证电子邮件地址的字符列表是什么。
【问题讨论】:
尝试使用正则表达式验证用户名字段,然后再将其传递给您要传递的任何方法。这是一个例子:
【讨论】:
阅读RFC 2822 了解完整的电子邮件地址语法。如果您通过 BNF 工作,您会发现 "@,@"@foo.bar 非常好,如果不寻常的话。不过,您要求的规则可以在第 3.2.4 节中找到:
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 节:
addr-spec = local-part "@" domain
local-part = dot-atom / quoted-string / obs-local-part
domain = dot-atom / domain-literal / obs-domain
如果您在 local-part 和 domain 规则中忽略除 dot-atom 之外的所有内容,您将匹配公共或花园地址。您的 asp.net 控件可能不接受所有有效的 RFC2822 地址,因此您应该检查该文档。
您可能会执行类似于“%
(来自 O'Reilly 的掌握正则表达式曾经有一个用于邮件地址的巨大的单页正则表达式(大部分是正确的),但它在第三版中消失了。)
【讨论】: