2013-04-14 8 views
2

다음 유효성 검사 정규 표현식에 ';'로 구분 된 전자 메일 주소 목록이 있습니다.전자 메일 목록에 대한 정규식, 유효하지 않은 전자 메일 주소

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)* 

문제가 발견 될 때까지 제대로 작동하지 않았습니다.

그것은뿐만 아니라 같은 물건 (예정) 이 [email protected] 수 있습니다; [email protected], [email protected]

그것은이 같은 물건을 할 수 있습니다 : (아닙니다) 이메일 @ 도메인 .comEmail @ domain.comEmail @ domain.com

어디에서 문제가 있습니까?

+3

왜 세미콜론으로 구분 된 전자 메일 목록과 목록의 각 요소에 대한 유효성 검사를 분할하지 않습니까? 그렇게하면 단 하나의'@'만 허용됩니다. – Jerry

+0

좋은 아이디어, 그것을 시도합니다. – AngelicCore

답변

1

이 정규식으로 이메일을 확인하는 표준 방법이다 : 그것은 완벽 하진 \b\[email protected][\w.]+\.[A-z.]{2,4}\b
하지만 당신의 예를 들어 작동합니다.
또한 세미콜론으로 문자열을 분할 한 다음 하나씩 전자 메일의 유효성을 검사 할 수도 있습니다.

0

이 하나를 시도

(?:(?:^|;)\w+(?:[-+.]\w+)*@\w+(?:[-.]\w+)*\.\w+(?:[-.]\w+)*)+$ 
1

이메일을 한 번에 하나씩 확인하는 것이 가장 깨끗한 내기 일 것입니다. 그렇지 않으면 정규식이 꽤 추해 질 수 있습니다. 특히 나중에 주소에 복잡한 요구 사항을 추가 할 경우 특히 그렇습니다. 한 번에 한 주소를 사용하면 큰 도움이됩니다. 즉, how to validate an email address using regex과 같은 문제가있는 것입니다.

관련 문제