下面是我的电子邮件验证代码 -
UserViewModel.cs
[EmailAddress(ErrorMessage = "Invalid email address")]
public string EmailAddress { get; set; }
Edit.cshtml
<div class='form-group'>
@Html.LabelFor(model =>model.EmailAddress):
@Html.TextBoxFor(model =>model.EmailAddress)
@Html.ValidationMessageFor(m => m.EmailAddress)
</div>
UserController.cs
if (!ModelState.IsValid)
{
//Show error to user
}
//Update user details
我查看了此Wiki页面以获取有效的电子邮件地址 - https://en.wikipedia.org/wiki/Email_address#Examples
当我尝试提交以下电子邮件地址的表单时
"much.more unusual"@example.com
"very.unusual.@.unusual.com"@example.com
"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com
admin@mailserver1
"()<>[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~.a"@example.org
" "@example.org
üñîçøðé@example.com
üñîçøðé@üñîçøðé.com
除了admin@mailserver1
之外,所有上述电子邮件地址都在客户端验证失败,而Baba"\t"58.38
Tata"\t"68.38
Mama"\t"30.80
jaja"\t"88.65
在服务器端验证失败。
问题 -
谢谢!
答案 0 :(得分:1)
对于html5客户端验证 - 我相信大多数情况都会失败 - 请参阅w3c's email specification - 用于验证电子邮件的正则表达式是:
/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
所有列出的admin@mailserver1
形式的列表将无法通过此正则表达式匹配测试。
您可以在ASP.NET MVC github repo中找到asp.net MVC中用于电子邮件验证的正则表达式
从我执行的RegEx测试中,除了admin@mailserver1