C# 如何确保用户在文本框中输入电子邮件地址?
如何确保我的web表单应用程序的用户已输入电子邮件地址?我见过使用regex和EmailAddress()的示例,但是如何在下面的if-else语句中实现其中一个呢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
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;
}