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

时间:2010-08-19 20:28:22

标签: 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 方法永远不会返回该特定字符串。它进入一些无限循环。任何人都可以看到模式的问题。

谢谢!

3 个答案:

答案 0 :(得分:1)

(有些东西)*很糟糕。见这里:http://www.regular-expressions.info/catastrophic.html

答案 1 :(得分:0)

我建议您使用以下内容来验证电子邮件地址:

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

这是一个interesting read

答案 2 :(得分:0)

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