电子邮件地址验证c#
本文关键字:验证 电子邮件地址 | 更新日期: 2023-09-27 18:07:17
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;
}
但是a现在应该是有效的地址,即name+@domain.com仍然被认为是错误的。
我不确定问题在哪里(我认为这不是明显的语法错误)您提供的代码确实按照您所描述的方式工作。
我重写了一点,所以它可以编译和工作:
public static bool IsValidEmail(string sEmail)
{
return sEmail.IndexOf("@") != -1 && sEmail.IndexOf(".") != -1;
}
用这个非单元测试验证:
[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" ) );
}
试试这个解决方案:
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;
}