У меня есть следующее выражение регулярного выражения на машине разработчика, на которой работает .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;
}
\""
, чтобы избежать кавычек, когда вам нужно только""
. Избавление от обратной косой черты, вероятно, не решит вашу проблему, но позволит правильной работе подсветки синтаксиса SO, облегчив нам чтение кода. - person Alan Moore   schedule 23.09.2009