Ceci est une continuation de l'article précédent .
Après avoir défini la validation dans les colonnes nom et e-mail, j'aimerais utiliser une expression régulière pour déterminer s'il s'agit d'une adresse e-mail valide ([email protected], etc.), mais Ruby reference , vous risquez de vous noyer dans une énorme quantité d'informations. .. .. Donc, cette fois, j'ai décidé d'enquêter et d'utiliser uniquement ce qui est nécessaire pour déterminer si l'e-mail est valide.
De la conclusion, voici l'expression régulière utilisée cette fois.
/\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
En ce qui concerne les expressions régulières, le tutoriel Rails est plus facile à comprendre que la référence Ruby. C'était. Ce qui suit est un extrait du didacticiel Rails, mais il semble que vous puissiez le comprendre en regardant cela.
Expressions régulières | sens |
---|---|
/\A[\w+-.]+@[a-z\d-.]+.[a-z]+\z/i | (Expression régulière complète) |
/ | Indique le début d'une expression régulière |
\A | Le début de la chaîne |
[\w+-.]+ | Alphabet, soulignement(_),plus(+),trait d'union(-),Point(.)Répéter au moins un caractère |
@ | Atmark |
[a-z\d-.]+ | Répétez au moins une lettre de lettres minuscules, de chiffres, de tirets ou de points |
. | Point |
[a-z]+ | Répétez au moins une lettre minuscule |
\z | Fin de chaîne |
/ | Indique la fin d'une expression régulière |
i | Option Ignorer la casse |
Vous pouvez également utiliser Rubular pour rechercher facilement les expressions régulières. C'est pratique!
Ajoutez ensuite cette expression régulière à la validation créée dans article précédent . Pour vérifier le format. .. ..
validates :email, format: { with: /<regular expression>/ }
Puisqu'il est dit que l'option format est utilisée de cette manière, ajoutez une expression régulière à la place de «expression régulière». app/models/user.rb
class User < ApplicationRecord
validates :name, presence: true, length: { maximum: 20 }
validates :email, presence: true, length: { maximum: 300 }, format: { with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i }
end
Quand j'ai essayé de m'inscrire en tapant l'email: "ruby" dans la console Rails, j'ai eu une erreur car cela ne ressemblait pas à [email protected]. C'est très pratique si vous maîtrisez les expressions régulières!
> user = User.create(name: "ruby", email: "ruby")
(0.2ms) BEGIN
(0.3ms) ROLLBACK
=> #<User id: nil, name: "ruby", email: "ruby", created_at: nil, updated_at: nil>
> user.errors.messages
=> {:email=>["is invalid"]}
Recommended Posts