代码之家  ›  专栏  ›  技术社区  ›  LiamB

电子邮件正则表达式验证

  •  8
  • LiamB  · 技术社区  · 15 年前

    是否可以将下面的表达式更正为不允许空白字段?

    <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 回复  |  直到 7 年前
        1
  •  11
  •   Paddy    15 年前

    同时添加一个必需的字段验证器-我认为只有当字段中有文本要查看时,regex验证器才会启动。

        2
  •  18
  •   akrisanov    7 年前

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

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

    Sample: someone@example.com网站

    但实际上,很难编写和维护一个好的电子邮件验证regexp。你不应该100%信任你的雷鬼。你可以在网上找到几篇关于这种困难的文章:

        3
  •  1
  •   npinti    15 年前

    你不能做些像

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

    我认为,由于正则表达式相当复杂,所以可以在正则表达式之外执行的任何操作都应该在正则表达式之外执行,这将使代码更具可读性,但这只是我自己。

    你的正则表达式很复杂, here 你应该找一个更简单的。 无论如何,您可以这样做:^(regex)1$

        4
  •  1
  •   abatishchev Karl Johan    13 年前

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

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

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

    顺便说一句,定制 UserControl 能够通过这样的验证器进行检查,使用

    [System.Web.UI.ValidationProperty("PropertyName")]
    
        5
  •  0
  •   Bimal Rohit R.    15 年前

    如果要将此字段视为必需字段,最好使用RequiredFieldValidator。

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

    谢谢,

        6
  •  0
  •   MUS    15 年前

    另一个选择是使用.NET 控件 设置它的 验证EmptyText ,对于电子邮件地址验证,可以使用javascript函数,该函数将在 客户端验证功能 验证程序的属性。

        7
  •  0
  •   Druid    13 年前
    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;
        }
    }
    
        8
  •  0
  •   Brad Larson    11 年前

    这可以通过简单地使用 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;
    }