0

我在运行 .NET 3.5 的开发机器上有以下正则表达式,它按设计工作。但是,当它部署到我们的测试环境(运行 .NET 2.0)时,它不能正常工作并且似乎总是返回 false。有谁知道罪魁祸首可能是什么?谢谢

using System.Text.RegularExpressions;

protected void emailContactCheck(object source, ServerValidateEventArgs args)
{
  string[] allContacts = this.Contacts.InnerText.ToString().Split(";,".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
  Regex rx = new Regex(@"^(([^<>()[\]\\.,;:\s@\""]+"
                    + @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@"
                    + @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
                    + @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+"
                    + @"[a-zA-Z]{2,}))$", RegexOptions.IgnoreCase);
  foreach (String contact in allContacts)
  {
    if (!rx.IsMatch(contact.Trim()))
    {
      args.IsValid = false;
      return;
    }
  }
  args.IsValid = true;
}
4

2 回答 2

0

我也会尝试将您的开发机器的 .Net 版本设置为 .Net 2.0。可以在项目构建属性上完成。您应该始终使用与测试/生产系统相同的版本。

然后,您可以尝试检查是否可以在运行 .Net 2.0 的开发机器上重现该问题。

于 2009-09-23T13:32:54.730 回答
0

根据regular-expressions.info,.NET 2.0 和 3.x 之间的正则表达式支持没有区别,所以问题可能不在于正则表达式引擎。

于 2009-09-23T13:37:09.810 回答