我正在尝试验证电子邮件字段。我有一个电子邮件的正则表达式
/ ^ [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>
答案 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>