Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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
C# 正则表达式问题:IsMatch方法永远不会返回_C#_Regex - Fatal编程技术网

C# 正则表达式问题:IsMatch方法永远不会返回

C# 正则表达式问题:IsMatch方法永远不会返回,c#,regex,C#,Regex,我有一个正则表达式问题需要帮助。它试图验证电子邮件地址 Regex rx = new Regex(@"^[A-Za-z0-9]([_\.\-]?[A-Za-z0-9]+)*\@[A-Za-z0-9]([_\.\-]?[A-Za-z0-9]+)*\.[A-Za-z0-9]([_\.\-]?[A-Za-z0-9]+)*$|^$"); rx.IsMatch("john.gilbert.stu.seattle.washington.us"); IsMatch方法永远不会返回该特定字符串。它进入了一个

我有一个正则表达式问题需要帮助。它试图验证电子邮件地址

Regex rx = new Regex(@"^[A-Za-z0-9]([_\.\-]?[A-Za-z0-9]+)*\@[A-Za-z0-9]([_\.\-]?[A-Za-z0-9]+)*\.[A-Za-z0-9]([_\.\-]?[A-Za-z0-9]+)*$|^$");
rx.IsMatch("john.gilbert.stu.seattle.washington.us"); 
IsMatch方法永远不会返回该特定字符串。它进入了一个无限循环。谁能看出这个图案有什么问题吗


谢谢

(一些东西)*不好。请参见此处:

我建议您使用以下方法验证电子邮件地址:

try
{
    MailAddress addr = new MailAddress("foo@bar.com");
}
catch (FormatException exc)
{
    // The email address is not valid
}

这里有一个。

第一个“+”是问题,如果删除它,它将运行

不确定错误是什么。我总是使用在线正则表达式测试器来构造正则表达式,就像我认为创建正则表达式的TDD方法一样。(顺便说一句,还有很多,只有谷歌)它确实返回了,只是非常缓慢。我尝试了一些在线正则表达式测试人员,他们很快返回“不匹配”的结果。这只是C#Regex在很长一段时间后才回来。我希望我能做到这一点。实际上,正则表达式位于XSD文件中,用于验证大型XML文档。为了隔离我的问题,我只选择了有问题的部分,并在上面写下了快速测试方法。+1用于有趣的阅读,-1用于建议在非异常情况下使用异常。@jloubert你怎么知道它是非异常的?如果这种情况是一种期望将邮件发送到所传递地址的方法,那么它是例外的,因为在这一点上没有可能成功的方法。好的一点——如果有一个
Validate()
方法和一个
sendmail()
方法,这个解决方案对于
sendmail()
Validate()
应该已经捕获到任何错误数据,因此可以保证出现异常。但是,如果这个问题的重点是编写
Validate()
方法本身,我会对此表示不满,因为我们可能希望获得无效数据并轻松处理它,而不诉诸异常。实际上,加号很好——事实上,您需要更多加号。不属于你的是问号<代码>^[A-Za-z0-9]+([.-][A-Za-z0-9]+)*@[A-Za-z0-9]+([.-][A-Za-z0-9]+)*$