0

有効な電子メール アドレスを持つ学生だけ.eduがサインアップできるようにしたい。

ここにレールドキュメントからの方法があります

validates :email, :format => { :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create }

私は正規表現にかなり弱いです。/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i私はグーグルに投げました、そしてテスト文字列はlaunch@bacon.com.

正規表現の経験はありません。テスト文字列が次の場合、.edu正規表現は何になりますか? それを理解するために見つけられる情報を教えてください。

4

2 に答える 2

1

2 つの検証を実装します。

  1. 正しい電子メール形式を確認する

validates :email, :format => { :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create }

  1. .edu ドメインを確認する

validates :email, :format => { :with => /.edu\Z/i, :on => :create }

于 2013-08-27T21:00:25.410 に答える
0

これは、たった 1 つの正規表現で行うことができます。

以下は、正規表現がどのように機能するかの完全な内訳ではありませんが、何が起こっているかを理解するのに役立つかもしれません. 電子メール アドレスが であるとしますme@mydomain.example.com。それで:

  • meマッチ/([^@\s]+)/
  • mydomain.マッチ/(?:[-a-z0-9]+\.)/
  • example.もマッチ/(?:[-a-z0-9]+\.)/
  • mydomain.example.マッチ/(?:[-a-z0-9]+\.)+/
  • comマッチ/[a-z]{2,}/

したがって、最後のビットである/[a-z]{2,}/正規表現のみが一致するように変更する必要がありeduます。

/\A([^@\s]+)@((?:[-a-z0-9]+\.)+edu)\Z/i
于 2013-08-27T22:12:54.010 に答える