2009-09-22 135 views
0

我在運行.NET 3.5的開發機器上具有以下正則表達式,它按照設計工作。但是,當它被部署到我們的測試環境(運行.NET 2.0)時,它不能正常工作,並且總是返回false。有誰知道罪魁禍首可能是什麼?謝謝C#正則表達式兼容性問題(.NET 3.5與.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

您確定測試和開發環境具有相同的數據嗎?我不知道這是什麼.Contacts包含,並且沒有辦法可以絕對確定它們是相同的。 – 2009-09-22 23:26:39

+0

查找一些失敗的示例數據,我們應該可以提供幫助。 – 2009-09-23 00:26:43

+0

當您只需要''「'時,您正在使用'\」「'來轉義引號。擺脫反斜槓可能不會解決您的問題,但它會讓SO的語法突出顯示正常工作,使我們更容易閱讀代碼。 – 2009-09-23 02:23:27

回答

0

根據regular-expressions.info,在.NET 2.0和3.x之間的正則表達式支持沒有區別,所以問題可能不在於正則表達式引擎。

0

我會嘗試將.Net版本的開發機器設置爲.Net 2.0。可以在項目構建屬性上完成。您應始終使用與您的測試/生產系統相同的版本。

然後,您可以嘗試檢查是否可以在運行.Net 2.0的開發機器上重現該問題。