2013-09-26 3 views
0

지금 당장이 상황에 맞는 전자 메일 주소와 일치하는 정규식 \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*이 있습니다.여러 전자 메일 일치하는 정규식

나는 CSV 셀 매칭을 위해 여러 가지를 시도했지만, 이것들을 작동시킬 수는 없다.

나는 위의 정규식과 일치하는 뭔가가 필요하지만, 사이의 구분 기호를 무엇을 가지고, 세 가지 다른 구분 기호 '|' ',' ';' 예를 들어 나는

[email protected] 

[email protected]|[email protected]|[email protected] 

[email protected],[email protected],[email protected] 

[email protected];[email protected];[email protected] 

가 나는 또한 공백 걱정하지 않는다 일치 할,있다, 그래서 그것은 여전히 ​​위를 차지하면서 그들을 예를 들어,에 여분의 공간을 추가하는 설명 할 필요가있다 : 그것은 또한 구분 기호

의 조합을 사용 할 수 있어야

[email protected] | [email protected]|[email protected] 

[email protected],[email protected];[email protected]|[email protected] 

내가 c#

주에이 일을하고,이 How to match a comma separated list of emails with regex?

살펴 보았다하지만 내 요구를 충족하기 위해 ^([\w+-.%][email protected][\w-.]+\.[A-Za-z]{2,4},?)+$을 수정하는 방법을 잘 모르겠습니다

현재 내가 가지고있는

(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*[\s?[,|\||;|]\s?]?)+$ 
+0

@ hwnd, 전자 메일 주소는 'john.malcovic + some-subadres @ sub.domain.museum.uk' 형식으로 보았습니다.) 많은 인터넷 양식은이를 허용하지 않습니다. 예, 박물관은 유효한 도메인 확장 물입니다. 그래도 어쩌면 ... 모르겠다. – funkwurm

+0

예'''나를 궁금하게 만들었습니다 – hwnd

+0

실제 이메일 주소는 매우 복잡 할 수 있습니다. 대부분의 사람들이 깨닫는 것보다 더 많이. 예를 들어 전자 메일 주소에 주석이 포함될 수 있음을 알고 있습니까? http://en.wikipedia.org/wiki/Email_address는'john.smith (comment) @ example.com'이 유효한 이메일 주소라고 제안합니다.일반적으로 Regex로 전자 메일 주소의 유효성을 검사하는 것은 좋은 생각이 아니라고 생각합니다. 주로 인식되지 않는 유효한 전자 메일 주소가있을 가능성이 있기 때문입니다. 당연히 당신은 절대적으로 필요하지 않을 수도 있습니다 ... – Chris

답변

1

String.Split()MailAddress 생성자의 조합을 사용합니다. 이런 식으로 뭔가가 :

public bool ValidAddressText(string input) 
{ 
    string[] addresses = input.Split(new Char[] { ',', ';', '|' }); 
    foreach (string address in addresses) 
    { 
     address = address.Trim(); 
     try 
     { 
      if (address == "") 
      { 
       return false; 
      } 

      new MailAddress(address); 
     } 
     catch(FormatException) 
     { 
      return false; 
     } 
    } 

    return true; 
} 

이 .NET Framework가 업데이트 될 때 정규 표현식이 아닌, 심지어 시간이 지남에 더 얻을 것이다 모든 가장자리 케이스를 잡을 것입니다. 또한 구분 기호와 공백을 쉽게 처리 할 수 ​​있습니다.

0

시도해주세요. (;|\||,)

RegExBuddy 도구를 사용하는 것이 좋습니다. 이렇게 손쉽게 패턴을 시도 할 수 있으며 올바른 패턴을 얻으려면 항상 나를 위해 좋은 도움이됩니다. 트라이얼 버전이 있습니다!

(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\s?[,|\||;|]\s?)?)+$ 

나는 내 문제를 해결 믿고, 어떤 제안 :

0

나는 이것에 대한 lookbehind 및 내다을 사용하십시오 :

(?<=\s|\||;|,|^)[\w.+-][email protected](?:[\w-]+\.){1,2}(?:[a-z]{2,6})(?:\.[a-z]{2,6})?(?=\s|\||;|,|$) 

당신이 정규식 here을 테스트 할 수 있습니다.

관련 문제