【问题标题】:EmailAddressAttribute Validation电子邮件地址属性验证
【发布时间】:2015-09-09 14:15:40
【问题描述】:
我们正在使用来自msdn site 的 EmailAddressAttribute
这是验证地址,因此验证很好并且有效。但是,该库使用的验证本身或定义的标准在哪里?我一直在搜索各种网站,只是为了找到这个标准。
我也知道要覆盖这个基类并给它我自己的正则表达式来用作验证,如here 所述,但我只是好奇验证来自上述链接的位置。
【问题讨论】:
标签:
asp.net-mvc-5
data-annotations
email-validation
【解决方案1】:
这是该属性使用的正则表达式。考虑到包含各种特殊字符,我想说他们可能正在使用电子邮件地址的互联网标准 RFC 822。
http://www.faqs.org/rfcs/rfc822.html
^((([az]|\d|[!#\$%&'\*\+\-\/=\?\^{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_{\|}~]|[\ u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\ x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\ uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\ uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22))))@((([az]|\ d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([ az]|\d|-|\.||~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|[\u00A0 -\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([az ]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([az]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0 -\uFFEF])([az]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$