2009-09-22 4 views
0

У меня есть следующее выражение регулярных выражений на dev-машине, на которой запущена .NET 3.5, и она работает как запроектированная. Однако, когда он развертывается в нашей тестовой среде (которая работает .NET 2.0), она работает неправильно и всегда возвращает false. Кто-нибудь знает, что может быть виновником? СпасибоПроблема совместимости с регулярными выражениями (.NET 3.5 vs .Net 2.0)

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(@"^(([^<>()[\]\\.,;:\[email protected]\""]+" 
        + @"(\.[^<>()[\]\\.,;:\[email protected]\""]+)*)|(\"".+\""))@" 
        + @"((\[[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; 
} 
+1

Вы уверены, что среда тестирования и разработки имеет одинаковые данные? Я не знаю, что это такое. Контакты содержат, и нет никакого способа быть абсолютно уверенными, что они эквивалентны. –

+0

Найдите образцы данных, которые не работают, и мы сможем помочь. –

+0

Вы используете '\" "', чтобы избежать кавычек, когда вам нужно только '' ''. Избавиться от обратной косой черты, вероятно, не удастся исправить вашу проблему, но она позволит корректно отображать синтаксис SO, что упрощает чтение кода. –

ответ

0

Согласно regular-expressions.info, нет различий в поддержке регулярных выражений между .NET 2.0 и 3.x, поэтому проблема, вероятно, не связана с механизмом регулярных выражений.

0

Я бы попытался установить .Net версию вашей машины-разработчика на .Net 2.0 тоже. Может быть сделано для свойств сборки проекта. Вы всегда должны использовать ту же версию, что и в вашей тестовой/производственной системе.

Затем вы можете попытаться проверить, можете ли вы воспроизвести проблему также на вашей машине разработчика .Net 2.0.

Смежные вопросы