Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex电子邮件代码不匹配。C#visual studio 2010_C#_Regex_Visual Studio 2010_Visual Studio_Email Validation - Fatal编程技术网

Regex电子邮件代码不匹配。C#visual studio 2010

Regex电子邮件代码不匹配。C#visual studio 2010,c#,regex,visual-studio-2010,visual-studio,email-validation,C#,Regex,Visual Studio 2010,Visual Studio,Email Validation,我是c#的新手,遇到了一些我无法解决的问题 情况 我正在使用visual studio 2010创建一个windows窗体应用程序,该应用程序具有验证电子邮件地址的选项。我阅读了有关使用RegularExpressions的教程,并了解了这一点。我觉得我遗漏了一些东西,因为每次我验证时,它只发送MessageBox.Show(“电子邮件无效”)发送给用户 代码 是一个特殊字符,请使用 Regex email = new Regex(@"^[a-zA-Z0-9]{1-20}@[a-zA-Z0-9]

我是c#的新手,遇到了一些我无法解决的问题

情况 我正在使用visual studio 2010创建一个windows窗体应用程序,该应用程序具有验证电子邮件地址的选项。我阅读了有关使用
RegularExpression
s的教程,并了解了这一点。我觉得我遗漏了一些东西,因为每次我验证时,它只发送
MessageBox.Show(“电子邮件无效”)发送给用户

代码
是一个特殊字符,请使用

Regex email = new Regex(@"^[a-zA-Z0-9]{1-20}@[a-zA-Z0-9]{1-20}\.[a-zA-Z]{2-3}$");

请注意,我在字符串前面添加了一个
'@'
,以避免转义
'\'

,通常我不会使用
异常来指导这样的程序逻辑,但在验证电子邮件时,我发现使用内置的.NET功能比尝试转义更可靠、更可读

或者,只需测试地址:

try
{
    var mail = new MailAddress(emailTxt.Text);
    MessageBox.Show("Email Valid");
}
catch (FormatException)
{
    MessageBox.Show("Email Invalid");
}
这个类不是完美的,你可以找到一些帖子,显示它并没有抓住每一个边缘案例


但是,我想我还是坚持上面的说法,抓住机会。

您的正则表达式中有两个语法错误:

代表随机符号,因此必须用反斜杠转义:
\。

{1-20}
不能用逗号书写:
{1,20}

[a-zA-Z0-9]{1,20}@[a-zA-Z0-9]{1,20}\.[a-zA-Z]{2,3} 
工作

如果使用C#,则必须在第一个
之前带一个
@
,说明它不应在字符串中使用反斜杠进行转义。在搜索正则表达式时,它应该这样做

@"[a-zA-Z0-9]{1,20}@[a-zA-Z0-9]{1,20}\.[a-zA-Z]{2,3} "

让您尝试验证的文本有助于您输入的电子邮件地址是什么,它失败了?您的正则表达式有两个问题。一个问题是,
是一个特殊字符,表示“任何字符”;您将其用作文本,应该像
\”一样转义。
(但这不会导致失败。我看到的第二个问题是它不会处理
one@two.three.com
。但请提供您的输入,以便我们能够更好地提供帮助。对于任何试图提供帮助的人,都必须提供链接。这可能不是问题的根本原因(我们没有OP的输入数据可以确定),因为
特殊字符实际上将匹配
文字,并且不会导致失败。谢谢,我用这个更新了我的代码,它可以工作了!:)
[a-zA-Z0-9]{1,20}@[a-zA-Z0-9]{1,20}\.[a-zA-Z]{2,3} 
@"[a-zA-Z0-9]{1,20}@[a-zA-Z0-9]{1,20}\.[a-zA-Z]{2,3} "