2013-08-25 5 views
1

전자 메일 주소의 유효성을 검사하기 위해 모델 파일에서 validates_format_of를 사용하려고합니다. 그러나 두 개의 특수한 경우에 두 개의 정규식을 입력해야합니다. 기본적으로 몇 가지 최상위 도메인 이름 만 허용됩니다.RoR 전자 메일 유효성 검사 - 여러 Regexes/형식

그러나 유효성에 대한 소스 코드에 따르면 형식 키와 해시 값으로 옵션 집합 중 하나만 허용됩니다. 여러 regexes를 사용하는 방법이 있나요? 논리 연산자를 시도했지만 첫 번째 논리 연산자 만 받아들이는 것처럼 보입니다. 또한 동일한 필드에서 두 가지 유효성 검사 방법을 사용하면 다른 조건을 위반할 때 받아 들여지지 않습니다.

실제로 설명하기 위해 Gmail이나 야후 등 다른 이메일 만 보내고 싶습니다. regexes를 사용하여 두 가지를 표현하는 방법은 무엇입니까? 이것은 내 Gmail 코드이며 작동합니다 :

이메일 : : with (>() $/i)

다른 최상위 도메인 이름을 포함하도록 어떻게 변경합니까?

답변

2
validates_format_of :email, 
    :with => (/^([^@\s]+)@((gmail|yahoo|hotmail)\.+[a-z]{2,})$/i) 

?

끝에 [a-z]는 '.com.au'또는 이와 유사한 내용을 캡처하지 않습니다. 괜찮습니까? 또한

,

. is for single character, you want \. for an actual period 
otherwise 'gmailxcom' would be valid 
+0

고마워요! 그리고 참으로, [a-z] 제약은이 경우에는 문제가되지 않습니다. – thepervysage

0

는 @ Neet324의 대답에 구축하기 위해, 당신은 사용할 수 있습니다

validates_format_of :email, :with => (/^([^@\s]+)@((\.?\w+)+)$/i) 

는 하위 도메인 및 국가 수준의 상위 도메인을 포함한 모든 이메일 도메인을 캡처 할 수 있습니다.