我正在建立一个基本的联系人经理,我想知道如何查看电子邮件地址是否包含“@”和“。”。字符,用于验证目的。我一直在做一些环顾四周,我不太确定,我能以某种方式使用“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;
}
答案 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了解详情。