繁体   English   中英

电子邮件正则表达式验证

[英]Email Regular Expression 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>

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

^([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

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

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

您需要使用额外的验证器asp:RequiredFieldValidator

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

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

顺便说一句,要使自定义UserControl能够使用这样的验证器进行检查,请使用

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

难道你不能做出类似的东西

if (txtEmail.Text.Trim().length > 0) then
       validate

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

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

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

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

谢谢,

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

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;
    }
}

这可以通过在System.Text.RegularExpressions简单地使用Regex类来完成:

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM