电子邮件地址验证C#

时间:2013-04-03 12:14:19

标签: c# email

新手到C#并且似乎有问题。 我正在修改一个程序,该程序具有以下代码验证电子邮件地址':

public static bool IsValidEmail(string sEmail)
    {
        sEmail = sEmail.Trim();
        if (sEmail == string.Empty)
        {
            return false;
        }
return (Regex.IsMatch(sEmail, @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@"
                       + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\."
                       + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
                       + @"([a-zA-Z]+[\w-]*\.)+[a-zA-Z]{1,4})$"));

现在,由于实施了这一点,电子邮件验证已经改变,现在我只想验证是否存在@和a。在地址。

我试过了:

   public static bool IsValidEmail(string sEmail)
     if ((sEmail.IndexOf("@") != -1) & (sEmail.IndexOf(".") != -1))
        {
            return true;
        }
        else
        {
            return false;
        }

但是现在应该是有效的地址,即name+@domain.com仍然被收到为坏。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

我不确定问题出在哪里(我认为这不是明显的语法错误) 您提供的代码确实按您描述的方式工作。

我重写了一点,所以编译和工作:

public static bool IsValidEmail(string sEmail)
{
    return sEmail.IndexOf("@") != -1 && sEmail.IndexOf(".") != -1;
}

使用此nunit测试验证:

[Test]
public void IsValidEmailTest()
{
    Assert.IsTrue( IsValidEmail( "name+@domain.com" ) );
    Assert.IsTrue( IsValidEmail( "name@domain.com" ) );
    Assert.IsFalse( IsValidEmail( "namedomain.com" ) );
    Assert.IsFalse( IsValidEmail( "namedomaincom" ) );
    Assert.IsFalse( IsValidEmail( "named@omaincom" ) );
}

答案 1 :(得分:0)

试试这个解决方案:

    protected override bool EvaluateIsValid()
    {
        string val = this.GetControlValidationValue(this.ControlToValidate);
        string pattern = @"^[a-z][a-z|0-9|]*([_][a-z|0-9]+)*([.][a-z|0-9]+([_][a-z|0-9]+)*)?@[a-z][a-z|0-9|]*\.([a-z][a-z|0-9]*(\.[a-z][a-z|0-9]*)?)$";
        Match match = Regex.Match(val.Trim(), pattern, RegexOptions.IgnoreCase);

        if (match.Success)
            return true;
        else
            return false;
    }