Validation: Uniquement des lettres, des chiffres et
Je voudrais valider mes utilisateurs, de sorte qu'ils ne peuvent utiliser qu'un-z et leur nom d'utilisateur.
validates_format_of :username, :with => /[a-z]/
Toutefois, cette règle permet également d'espaces ._@
Username should use only letters, numbers, spaces, and .-_@ please.
Des idées?
Salutations les meilleures.
Asbjørn Morell
C'est ce que je suis venu avec: validates_format_of :nom d'utilisateur, :avec => /^[-a-z\d_]+$/
Lorsque vous avez une réponse qui résout votre problème, vous devez marquer comme acceptée.
Lorsque vous avez une réponse qui résout votre problème, vous devez marquer comme acceptée.
OriginalL'auteur atmorell | 2009-07-16
Vous devez vous connecter pour publier un commentaire.
Vous devrez peut-être dire que l'ensemble de la chaîne doit correspondre à:
Vous pouvez aussi avoir besoin de remplacer ^ \A et $ \Z, si vous ne voulez pas correspondre à un retour à la ligne au début/à la fin. (merci à BaroqueBobcat)
Ajoutant un, je ferai en sorte qu'elle corresponde à la casse. (merci à Omar Qureshi).
(J'ai aussi à l'origine à gauche hors de la
+
: grâce à Chuck)Vous exemple renvoie toujours invalide :/
de test dans les rir .. re = /^[-a-z]$/i; "toto" =~ re
Il doit être
/^[-a-z]+$/
(avec uni
après la deuxième barre si vous le voulez pas sensible à la casse). Sans +, vous dites que c'est exactement un caractère.le ^ et le $ correspondre les débuts et fins de lignes. Pour s'assurer qu'aucun des retours à la ligne \A \Z qui correspondent au début et à la fin de la chaîne.
OriginalL'auteur
Plus complexe solution, mais réutilisables et avec plus de précision, les messages d'erreur.
Validateur personnalisé:
app/validators/username_convention_validator.rb
(Remarquez qu'il n'est autoriser". - _ ' et ne pas permettre non ascii, par souci d'exhaustivité)
Utilisation:
app/models/user.rb
OriginalL'auteur
[] Peut contenir plusieurs "règles", donc [a-z0-9] donne les minuscules et les chiffres
le caractère spécial doit aller au début de la règle
Ne
donner l'effet que vous voulez?
il a seulement demandé de a-z 😉
Je préfère marquer comme non sensible à la casse.
Hmmm non désolé, ça me donne le nom d'utilisateur doit utiliser uniquement des lettres, des chiffres, des espaces et .-_@ s'il vous plaît.
OriginalL'auteur
Remarque *, qui signifie '0 ou plus"
OriginalL'auteur
Simplement modifier l'expression régulière pour correspondre à tous les personnages de votre cahier des charges unis (
\w
couvre tous les caractères alphanumériques-les lettres et les nombres -- et un trait de soulignement).Il n'y a pas de limite ici à prévenir plus de chaînes de caractères qui correspondent. Cela correspond à toute chaîne de caractères qui contient au moins l'un des caractères correspondent.
OriginalL'auteur