C# 如何确保用户在文本框中输入电子邮件地址?

C# 如何确保用户在文本框中输入电子邮件地址?,c#,wpf,if-statement,textbox,email-validation,C#,Wpf,If Statement,Textbox,Email Validation,如何确保我的web表单应用程序的用户已输入电子邮件地址?我见过使用regex和EmailAddress()的示例,但是如何在下面的if-else语句中实现其中一个呢 if (emailTextBox.Text == "" || emailTextBox.Text.Length > 100) { emailErrorString = "Email: Enter email address. No more than 100 characters.\n\n"; emailSt

如何确保我的web表单应用程序的用户已输入电子邮件地址?我见过使用regex和EmailAddress()的示例,但是如何在下面的if-else语句中实现其中一个呢

if (emailTextBox.Text == "" || emailTextBox.Text.Length > 100)
{
    emailErrorString = "Email: Enter email address.  No more than 100 characters.\n\n";
    emailString = null;
    errorMessage = true;
}
else
{
    emailString = emailTextBox.Text;
    emailErrorString = null;
}
我尝试了以下代码,即使我输入了无效的电子邮件地址,结果还是正确的”jj@jj.我没有输入“.com”或“.net”之类的内容:

 if (emailTextBox.Text == "" || emailTextBox.Text.Length > 100 ||                                          
      IsValid(emailTextBox.Text).Equals(false)) 
 {
     emailErrorString = "Email: Enter a valid email address. No more than 100
           characters.\n\n"; emailString = null; errorMessage = true; 
 } 
 else 
 { 
      emailString = emailTextBox.Text; emailErrorString = null; 
 }

如果它可以是任何类型的电子邮件地址,并且代码不必检查它是否有效,那么您可以使用此代码,它基于以下结构:

example@domain.extension

唯一要做的是检查字符串是否包含@字符,即。字符,以及有效的电子邮件域和扩展名(com/de/org/…)

此代码仅在文本框中没有其他内容时有效,只有地址问题。 我知道这有点长,也许不是最完美的答案。但通过这种方式,您可以自定义代码接受哪些域和扩展,哪些不接受

但是,如果您想检查这个电子邮件地址在现实中是否存在,我认为这个解决方案不起作用

我没有添加在长度超过100时引发异常的代码,但您可以随时添加它

希望这有点帮助!:)

您可以使用类,如下所示:

public bool IsValid(string emailAddress)
{
    try
    {
        MailAddress m = new MailAddress(emailaddress);
        return true;
    }
    catch (FormatException)
    {
        return false;
    }
}
或者, 您可以使用正则表达式(您应该能够找到一个适合验证电子邮件地址的正则表达式)。
此链接提供了可用字符/模式的基本概念:

尝试创建一个新的System.Net.Mail.MailAddress对象。将用于用户输入的文本框的Text属性作为参数传递到此构造函数。把这个包在一个Try-Catch块中。如果地址无效,您将得到一个FormatException。

我尝试使用MailAddress()示例和“jj@jj“作为有效电子邮件返回。因此,我尝试了以下方法,效果非常好:

 ///Create a Regular Expression
 Regex regEmail = new Regex(@"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?
      \^_`{|}~]+)*"
        + "@" 
        + @"((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$");
以及:


我不知道我为什么会在这里落选。我已经做了研究,正如我前面所说,我已经看到了有关使用regex和Emailaddress()验证的问题和答案,但我不知道如何在代码中实现它。如果你因为缺乏研究而投票否决我,我希望你能给我一个链接,找到你认为存在的答案。非常感谢!什么都没有?那正是你需要的。谢谢你,先生!我想我知道了如何在代码中实现MailAddress()!是的,crashmstr,我做了大量的搜索,我再次不确定如何在代码中实现MailAddress()。谢谢大家的帮助。我是编程新手。我认为你不能检查有效的顶级域。现在有太多了。或者是一个有效的域名。基本的语法是你唯一能做的。谢谢你的回答!我不太关心它是否来自任何特定的域,或者地址是否存在,只关心它的格式是否正确。这可以做到这一点,但是我知道使用MailAddress()类有一种更短的方法,如下所示:。我只是不确定如何在我的代码/if-then语句中实现它。另外,我非常感谢任何人提出我的问题。开车后,我的声誉下降了。谢谢!我想我知道了我如何在我的代码中实现这一点。你能提出我的问题吗?再次感谢你!我试过这样做:如果(emailTextBox.Text==“”| | | emailTextBox.Text.Length>100 | | IsValid(emailTextBox.Text).Equals(false)){emailErrorString=“Email:输入一个有效的电子邮件地址。不超过100个字符。\n\n;emailString=null;errorMessage=true;}否则{emailString=emailTextBox.Text;emailErrorString=null;}当我输入无效的电子邮件地址时,返回true,如jj@jjThank你!你能提出我的问题吗?我试过:如果(emailTextBox.Text==“”| | | | emailTextBox.Text.Length>100 | | |是有效的(emailTextBox.Text)。等于(false)){emailErrorString=“Email:输入有效的电子邮件地址。不超过100个字符。\n\n;emailString=null;errorMessage=true;}else{emailString=emailTextBox.Text;emailErrorString=null;}当我输入一个无效的电子邮件地址时,返回true,如jj@jj"jj@jj实际上是一个有效的电子邮件地址,没有TLD的电子邮件地址很少使用,但仍然有效。如果“jj”是尝试发送邮件的电子邮件服务器已知的主机,它会将邮件发送到运行在主机“jj”上的电子邮件服务器。由于缺少TLD通常是自定义主机配置的标志,因此对大多数面向外部的应用程序支持TLD并不有趣,但在公司的内部网上,这可能会很有用。
 ///Create a Regular Expression
 Regex regEmail = new Regex(@"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?
      \^_`{|}~]+)*"
        + "@" 
        + @"((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$");
 ///test the email textbox against the created Regular Expression
 if (emailTextBox.Text == "" || emailTextBox.Text.Length > 100 || 
                !regEmail.IsMatch(emailTextBox.Text))
            {
                emailErrorString = "Email: Enter a valid email address.  No more than
                     100 characters.\n\n";
                emailString = null;
                errorMessage = true;
            }
            else
            {
                emailString = emailTextBox.Text;
                emailErrorString = null;
            }