作ったもの
'hello'.email? #=> false
'hello@world.com'.email? #=> true
コード
Ruby 2.4
config/initializers/validations.rb
class String
def email?
self.match? /\A[^@\s]+@[^@\s]+\z/
end
end
Ruby 2.3 以前
config/initializers/validations.rb
class String
def email?
self.match /\A[^@\s]+@[^@\s]+\z/
end
end
補足
正規表現にはDevise 4.2.0にてDevise::email_regexp
として定義されている/\A[^@\s]+@[^@\s]+\z/
を使っています。(.
等を見ないので結構緩めです)
Deviseインストール済みなら上記のコードの該当部をself.match? Devise::email_regexp
と置き換えても同じ事が出来ます。(当然ですが…汗)
Ruby 2.4 以降にはマッチしたかどうかを true or falseで返す高速な match?
メソッドが追加されたので、そちらを使っています。