3

テキストフィールド(複数のメールアドレス)にメールアドレスを入力して新しいユーザーを招待するには、指定されたメールアドレスの形式を検証し、適切なエラーメッセージを表示する必要があります。ここでは、各メールアドレスの間にスペースを使用しています。(例:useremail@gmail.com useremail2@yahoo.com)ご案内ください。

1)ユーザーのメールアドレスの形式を検証する方法は?

2)ユーザーが2つのメールアドレスの間にスペースを使用していないかどうかを確認するにはどうすればよいですか?

3)これを行うための最良の方法を提案します。

レールを使用しています(2.3.Xおよびruby 1.8.7)

ユーザーコントローラー

def invite_users
  if request.get?
    #render invite_users.html.erb
  elsif request.post?
    if !params[:email_ids].blank? && !params[:message].blank?
      @email_ids = params[:email_ids].split(/ |, |,/)
      @message = params[:message]
      @inviting_users = @email_ids.count
      @inviting_users.times do
        @all_emails = []
        @all_emails = @email_ids.shift
        activation_code = Digest::SHA1.hexdigest( Time.now.to_s.split(//).sort_by {rand}.join)
        UserNotifier.deliver_invite_users(@all_emails, @message,activation_code, current_company)
        end
     else
       flash[:notice] = "Please fill all the fields"
     end
  end
end
4

1 に答える 1

2

1)単純な正規表現を使用して、電子メールフィールドの値を確認できます。最も緩いものから最も複雑なものまで、機能する可能性のある多くの正規表現があります。人々は一般的にこのようなものを使用する傾向があります:

unless email =~ /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/
   puts "Your email address does not appear to be valid")

この正規表現は、いくつかの無効な電子メールアドレスを通過させる可能性があります(非常にトリッキーなもののみであるため、基本的に、この正規表現は99.99%の確率で十分であると見なすことができます)。(ほぼ)完璧なチェックが本当に必要な場合は、これを検討してください:http: //www.ex-parrot.com/~pdw/Mail-RFC822-Address.html(それほど必要かどうかはわかりません)けれど)。

電子メールアドレスを検証するためのより正規表現(そしてもちろん私の最後のものよりも単純)については、こちらをご覧ください:正規表現を使用して電子メールアドレスを検証する

2)両方の電子メールアドレスが入力されているフィールドをstrip()するだけです。

于 2012-10-10T14:55:24.963 に答える