2011-01-21 67 views
0

以下REGEX如果提供的電子郵件域不匹配INVALID_EMAILs似乎無限期地運行並鎖定rails服務器(我的本地環境)。Rails 3 - 幫助電子郵件驗證正則表達式

INVALID_EMAILS = %w(gmail.com googlemail.com yahoo.com ymail.com rocketmail.com hotmail.com facebook.com) 


    def valid_email_domain(emailAddy) 
    reg = Regexp.new /#{User::INVALID_EMAILS.map{|a| Regexp.quote(a)}.join("|")}/ 
    if emailAddy.scan(reg).size == 0 
     return true 
    else 
     return false 
    end 
    end 

任何可以提供反饋的正則表達式專家?由於

更新:

控制器:

def create 

    @user = User.new 

    # User EmailVeracity to validate the email address 
    email = EmailVeracity::Address.new(params[:user][:email]) 

    Rails.logger.info 'Email Check Result' 
Rails.logger.info valid_email_domain(params[:user][:email]) 
    Rails.logger.info 'Email Check Result' 

    if email.valid? 
     Rails.logger.info 'Sign this email up' 
    else 
     Rails.logger.info 'Bad email, dont touch that' 
    end 

    respond_to do |format| 
     format.html 
     format.js 
    end 

    end 
protected 

    def valid_email_domain(emailAddy) 
    !(emailAddy =~ /#{User::INVALID_EMAILS.map{|a| Regexp.quote(a)}.join("|")}/) 
    end 

用戶模型:

INVALID_EMAILS = %w(gmail.com googlemail.com yahoo.com ymail.com rocketmail.com hotmail.com facebook.com) 

回答

2

你讓這樣太複雜了。這應該是足夠的:

def valid_email_domain(email_address) 
    !(email_address =~ /#{INVALID_EMAILS.map{|a| Regexp.quote(a)}.join("|")}/) 
end 
+0

謝謝,但正確的錯誤,當我有一封電子郵件匹配一個無效的電子郵件,它工作正常,並返回false。當我的電子郵件與任何invalid_emails rails不匹配時,掛起,不響應,卡住。 – AnApprentice 2011-01-21 23:37:36

相關問題