电子邮件正则表达式验证

时间:2010-04-16 11:29:32

标签: c# asp.net .net regex validation

任何人都可以更正下面的表达式,也不允许空白字段吗?

<asp:RegularExpressionValidator ID="expEmail" runat="server" ControlToValidate="txtEmail" ErrorMessage="valid email address required" ValidationExpression="^([a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]){1,70}$"></asp:RegularExpressionValidator>

8 个答案:

答案 0 :(得分:18)

其中一个解决方案(不是最好的解决方案)是实现一些正则表达式:

^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$

示例: someone@example.com

但实际上,编写和维护良好的电子邮件验证正则表达式非常困难。你不应该相信100%你的正则表达式。你可以在互联网上找到几篇关于这个难题的文章:

答案 1 :(得分:11)

同样添加一个必填字段验证器 - 我认为只有在字段中有文字要查看时才会触发正则表达式验证器。

答案 2 :(得分:1)

您需要使用其他验证工具 - asp:RequiredFieldValidator

<asp:RequiredFieldValidator runat="server" ControlToValidate="txtEmail" ErrorMessage="Message!" />

任何基于BaseValidator的ASP.NET 2.0验证程序(当然除了RequiredFieldValidator本身)都不会将指定的字段检查为空。

顺便说一句,要使自定义UserControl能够使用此类验证程序进行检查,请使用

[System.Web.UI.ValidationProperty("PropertyName")]

答案 3 :(得分:1)

你不能做像

这样的东西
if (txtEmail.Text.Trim().length > 0) then
       validate

我认为因为正则表达式相当复杂,所以可以在正则表达式之外完成的任何事情都应该在正则表达式之外完成,这应该使代码更具可读性,但这只是我。

你的正则表达式非常复杂,here你应该找到一个更简单的表达式。 无论如何,你可以做的是这样的:^(正则表达式){1} $

答案 4 :(得分:0)

如果您想根据需要处理此字段,那么最好选择RequiredFieldValidator。

    <asp:RequiredFieldValidator ID="reqEmail" ControlToValidate="txtEmail" runat="server" ErrorMessage="Email address required"></asp:RequiredFieldValidator>

谢谢,

答案 5 :(得分:0)

另一种选择是使用.net CustomValidator ,将其 ValidateEmptyText 设置为 True ,对于电子邮件地址验证,您可以使用JavaScript函数它将在验证器的 ClientValidationFunction 属性中指定。

答案 6 :(得分:0)

void Page_Load(Object sender, EventArgs e)
{
    string uNameExpr = "^[a-zA-Z](.{1,9})$";
    string phoneExpr = 
        "((\\(\\d{3}\\) ?)|(\\d{3}-))?\\d{3}-\\d{4}";

    // Define validation expressions.
    RegExprVal1.ValidationExpression = uNameExpr;
    RegExprVal2.ValidationExpression = phoneExpr;

    ReqFldVal1.Text = "User name is required";
    RegExprVal1.Text = "Must be between 2 to 10 characters";
    RegExprVal2.Text = "Please provide a valid number: (425) 555-0187";
    // ErrorMessages appear in ValidationSummary.
    RegExprVal1.ErrorMessage = "Incorrect UserName format. Name" +
        " can be 2 to 10 characters long";
    ReqFldVal1.ErrorMessage = "User name required";
    RegExprVal2.ErrorMessage = 
        "Please provide a valid number: (000) 000-0000";
}

void OnCmdClick(Object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        ActiveForm = Form2;
    }
}

答案 7 :(得分:0)

只需在Regex中使用System.Text.RegularExpressions课程即可完成此操作:

private bool ValidateEmail()
{
    string email = txtemail.Text;
    Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$");
    Match match = regex.Match(email);
    if (match.Success)
       return true;
    else
       return false;
}