2009-09-22 3 views
0

.NET 3.5를 실행하는 dev 컴퓨터에서 다음 정규 표현식을 사용하고 설계된대로 작동합니다. 그러나 .NET 2.0을 실행하는 테스트 환경에 배포하면 제대로 작동하지 않으며 항상 false를 반환하는 것처럼 보입니다. 범인이 무엇인지 아는 사람 있습니까? 감사합니다C# Regex 호환성 문제 (.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

당신의 dev 컴퓨터의 .Net 버전을 .Net 2.0으로 설정하려고합니다. 프로젝트 빌드 속성에서 수행 할 수 있습니다. 테스트/프로덕션 시스템에서와 동일한 버전을 사용해야합니다.

그런 다음 .Net 2.0을 실행하는 dev 컴퓨터에서도 문제를 재현 할 수 있는지 확인할 수 있습니다.

관련 문제