检查" @"和"。"在字符串?

时间:2013-12-01 21:07:27

标签: string email character

我正在建立一个基本的联系人经理,我想知道如何查看电子邮件地址是否包含“@”和“。”。字符,用于验证目的。我一直在做一些环顾四周,我不太确定,我能以某种方式使用“IndexOf”吗?任何帮助将不胜感激,这是我的代码到目前为止的样子。

public static string GetValidEmail(string message, List<Contact> contactList)
{
    // declare variables
    string validString;
    bool duplicateEmail;

    do
    {

        duplicateEmail = false;
        //ask user for input, remove empty space from beginning/end if it exists
        Console.Write(message);
        validString = Console.ReadLine().Trim();


        //check for empty string
        while (string.IsNullOrEmpty(validString))
        {
            //display error message, ask for user input 
            Console.WriteLine("ERROR: You cannot enter an empty value, please try again");
            Console.Write(message);
            validString = Console.ReadLine();
        }
        //check for duplicate email, if duplicate is found, restart do until loop
        for (int index = 0; index < contactList.Count && duplicateEmail == false; index++)
        {
            if (contactList[index].EmailAddress.ToUpper().Equals(validString.ToUpper()))
            {
                Console.WriteLine("ERROR: You cannot enter duplicate email addresses, please try again");
                duplicateEmail = true;
            }
        }
    } while (duplicateEmail);

    return validString;
}

2 个答案:

答案 0 :(得分:0)

不确定这是否正是您所需要的,但我通常在需要验证电子邮件地址时使用与此类似的方法。

    public bool IsValidEmail(string mail)
    {
        try
        {
            new MailAddress(mail);
        }
        catch (Exception)
        {
            return false;
        }
        return true;
    }

答案 1 :(得分:0)

我不建议使用异常捕获方法。在大多数情况下,正则表达式匹配将做足够好的工作。

bool isEmail = Regex.IsMatch(emailString, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z");    

请参阅 this answer了解详情。