10
votes

Rails Validation personnalisée basée sur une regex?

J'ai la regex suivante que j'utilise dans mes routes.rb pour / type in-quelque chose - ici xxx pré>

dans les itinéraires qui fonctionne bien comme: p>

validates_format_of :uuid, :with => /[A-Za-z\d]([-\w]{,498}[A-Za-z\d])?/i, :message => "Invalid! Alphanumerics only."


0 commentaires

3 Réponses :


11
votes

Utiliser quelque chose comme ceci xxx

pour plus de chèque Ce


1 commentaires

Cela fonctionne bien pour moi, mais la corse de fermeture est dans l'endroit incorrect de cet exemple. Il devrait être: valide: UUID,: format => {: avec => /.../i,: message => "..."}



17
votes

à des fins de validation, n'oubliez pas d'ajouter le début et la fin des marqueurs de chaîne \ a et \ z : xxx

sinon votre Regex correspondra heureusement à n'importe quelle chaîne contenant au moins une lettre ou un chiffre. Pour une raison quelconque, les rails ajoute implicitement les limites des itinéraires. (Probablement parce qu'il incorpore la regex à l'intérieur d'un plus gros pour correspondre à l'URL entière, avec des contrôles explicites pour / et la fin de l'URL.)


1 commentaires

Notez que l'utilisation de \ z à la fin de la regex permet une nouvelle ligne de fin. Vous voulez probablement \ z à la place. (Toutes mes excuses pour commenter un ancien problème.)



5
votes
validates :name, format: { with: /\A[a-zA-Z]+\z/,
message: "Only letters are allowed" }

0 commentaires