2010-02-17 4 views
3

전자 메일 형식에 정규 표현식을 사용하고 있었지만 고객이 표현식이 너무 엄격하다고 불평하고 있습니다. 그래서 그들은 다음 요구 사항으로 돌아 왔습니다 :일부 전자 메일 규칙의 정규 표현식

전자 메일에는 "@"기호가 포함되어 있고 .xx 또는 .xxx ie. (.nl 또는 .com)로 끝나야합니다. 그들은 이것을 받아 들여 검증을 통과하게되어 행복합니다. 나는 문자열이

^(? =. *는 @]가)

이하지만 마지막 요구 사항을 추가하려면 어떻게 작동하는 것 같다

는 (반드시 아래로 "@"기호가 포함되어 있는지 확인하기 위해 발현을 시작했습니다 .xx 또는 .xxx로 끝남)?

+0

사용되는 언어 따라, 시도 : \ \ w {2,3} $ 그러나 일부 domaind 엔딩은 3 개 이상의 문자가 있습니다. : * .info, ... – tur1ng

+1

@ tur1ng : 그리고 실제로, 박물관. –

+0

+1 : 그 말을 결코 들어 보지 못했습니다 .-) – tur1ng

답변

2

정규식을 사용할 수있는 것은 :

^[email protected]+\.[a-zA-Z]{2,3}$ 

그러나 일반적으로 정규 표현식보다 더 잘 작동하는 대부분의 언어에 대한 전자 메일 유효성 검사 라이브러리가 있습니다.

1

이 시도 :

([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})\be(\w*)s\b 

좋은 도구는 우리의 정규 표현식을 테스트 : http://gskinner.com/RegExr/

+0

좋은 대답은 주로 gskinner의 RegExp 테스터입니다. 나는 왜 글자 그대로 "e"+ 공백 + "s"를 끝에 넣었는지 궁금하다. 귀하의 표현은 [email protected]에서 실패합니다. 단순히 ([\ w - \.] +) @ ((? : [\ w] + \)) + ([a-zA-Z] {2,4}) \ b를 사용하면 성공합니다. – Robusto

0

당신은 단순히 두 가지 요구 사항을 적용

[@].+\.[a-z0-9]{2,3}$ 
+0

최상위 도메인에 허용되는 자릿수입니까? – tur1ng

+0

IP는 기술적으로 전자 메일에 허용됩니다. 그래서 내가 0-9를 추가했습니다. – Dominik

2

난 항상 이메일

  ^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" + 
      @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" + 
      @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$ 
뿐만 아니라

시도 http://www.ultrapico.com/Expresso.htm이 사용!

2

RegEx를 사용하여 모든 전자 메일 주소의 유효성을 검사 할 수는 없지만 사용자의 요구 사항에 대해이 간단한 정규식이 작동합니다. 그것은 없다 둘 다 완전한이나 오류에 대해 어떤 식 으로든 확인에 그것을 않습니다하지만 정확히 사양을 충족

[^@][email protected]+\.\w{2,3}$ 

설명 :

  • [^ @] + :없는 하나 개 이상의 문자를 일치 @ @
  • :.에서 @
  • 을 일치 + : 일치 하나의 문자
  • \ 더 :을 맞 춥니 다.
  • \ w {2,3} : 2 경기 또는 3 단어 문자 (A-ZA-Z)
  • $ : 문자열
0

의 끝이 작동합니다 :

^[^@\r\n\s]+[^[email protected]]@[^[email protected]][^@\r\n\s]+\.(\w){2,}$ 

@[email protected] 
[email protected] 
exampledomain.com 
[email protected] 
[email protected] 
[email protected]@com 

[email protected] 

[email protected] 
[email protected]@il.company.co 
[email protected]@internal-email.company.co 

@test.com 
[email protected] 
[email protected]  
[email protected] 

그리고이 유효한 이메일 :

나는이 유효하지 않은 이메일에 대해 그것을 테스트
[email protected] 
[email protected] 
[email protected] 

편집이 하나가 아마뿐만 아니라 일부 잘못된 이메일을 수 있지만, 그 위키 피 디아 페이지에서 모든 주소의 유효성을 검사 표시

. 괄호 전에 모든으로 분할하고 @ 후됩니다

^([^\r\n]+)@([^\r\n]+\.?\w{2,})$ 

[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected][IPv6:2001:db8:1ff::a0b:dbd0] 
"much.more unusual"@example.com 
"[email protected]"@example.com 
"very.(),:;<>[]\".VERY.\"[email protected]\\ \"very\".unusual"@strange.example.com 
[email protected] 
[email protected] 
!#$%&'*+-/=?^_`{}|[email protected] 
"()<>[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~.a"@example.org 
" "@example.org 
üñîçøðé@example.com 
üñîçøðé@üñîçøðé.com 
+2

http://en.wikipedia.org/wiki/Email_address#Valid_email_addresses 및 http://data.iana.org/TLD/tlds-alpha-by-domain.txt – Toto

+0

와우 감사합니다. 이것은 내가 찾고 있었던 바로 그 것이다. 아마 내가 정규 표현식을 만들기 시작하기 전에 봤어 야 했어. – Brett