【发布时间】:2013-03-25 02:29: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})$"));
现在,自从实施了电子邮件验证后,电子邮件验证发生了变化,现在我只想验证是否存在 @ 和 .在地址中。
我试过了:
public static bool IsValidEmail(string sEmail)
if ((sEmail.IndexOf("@") != -1) & (sEmail.IndexOf(".") != -1))
{
return true;
}
else
{
return false;
}
但是 a 现在应该是有效地址,即 name+@domain.com 仍被视为错误地址。
任何帮助将不胜感激。
【问题讨论】:
-
这不是重复的。这是一个语法问题。
-
@RoyiNamir - 自定义正则表达式和标准 .NET 正则表达式之间存在差异。一个更可能不太一致。
-
@keyboardP 我们可以争论这个模式。是的。但是说您不应该尝试使用正则表达式来验证电子邮件地址。 - 那是另一回事...
-
@RoyiNamir - 这是公平的,我应该用“你自己的”正则表达式来澄清。一个关键原因是,如果 OP 继续创建一个
MailAddress对象,该对象不针对 .NET 正则表达式进行验证,但针对他的正则表达式进行验证,无论如何都会引发异常。 -
这显然不是你真正的代码——它不能编译(缺少大括号来定义方法)。此外,您发布的代码会将
name+@domain.com验证为有效的电子邮件地址。请发布您的 real 代码和您的 real 问题。