如何在C#中验证电子邮件

时间:2019-03-09 11:56:01

标签: c# asp.net-mvc

我正在尝试验证电子邮件字段。我有一个电子邮件的正则表达式

  

/ ^ [a-z0-9 ._%+-] + @@ [a-z0-9 .-] +。[a-z] {2,4} $ /

在Visual Studio中,我的代码

  Email:<br>
        <input type="text" ng-model="Email" id="txtEmail" ng-pattern="/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/" name="Email" placeholder="Email" required>
        <span ng-show="myForm.Email.$error.pattern">Please enter valid Email!</span>
        <span ng-show="myForm.Email.$error.required">*</span><br>

发生错误 enter image description here

3 个答案:

答案 0 :(得分:4)

电子邮件验证是一个普遍的问题,您会发现每种正则表达式模式都无法解决所有情况。最好的方法是尝试将任何消息发送到此电子邮件,或者可以使用System.Net.Mail.MailAddress类

        try
        {
            var email = new System.Net.Mail.MailAddress(value);
        }
        catch (FormatException)
        {
            //handle it here
        }

答案 1 :(得分:4)

您说您正在使用C#和MVC。您可以使用内置验证;通过模型类中字段的属性支持电子邮件验证:

[EmailAddress(ErrorMessage = "The email address is not valid")]
public string Email { get; set; }

属性位于命名空间System.ComponentModel.DataAnnotations

Razor视图需要类似以下内容:

<div class="control-group">
    @Html.ValidationMessageFor(m => m.Email)
    @Html.LabelFor(m => m.Email, new { @class = "editor-label control-label" })
    <div class="editor-field controls">
        @Html.MbrraceTextBoxFor(m => m.Email, new { @class = "input-xlarge" })
     </div>
</div>

cshtml显示样式上有很多变体。

答案 2 :(得分:2)

您可以为pattern创建一个变量。

@{
    var pattern = "/^[a-z0-9._%+-]+@@[a-z0-9.-]+.[a-z]{2,4}$/";
}

<input type="text" ng-model="Email" id="txtEmail" ng-pattern="@pattern" name="Email" placeholder="Email" required>