簡體   English   中英

Rails 3-電子郵件驗證正則表達式幫助

[英]Rails 3 - Help with a Email Validation Regex

如果提供的電子郵件域與INVALID_EMAILs不匹配,則以下REGEX似乎會無限期運行並鎖定rails服務器(我的本地環境)。

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)

您使這種方式過於復雜。 這應該足夠了:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM