Je voudrais valider mes utilisateurs, afin qu'ils ne puissent utiliser A-Z et - dans leur nom d'utilisateur.
Username should use only letters, numbers, spaces, and .-_@ please.
5 Réponses :
Le [] peut contenir plusieurs "règles" afin que [A-Z0-9] donne des lettres minuscules et des chiffres
Le caractère spécial - doit aller au début de la règle p>
fait p> donne l'effet que vous voulez? p> p>
[-A-ZA-Z0-9 @ _.] <- avec majuscule, juste au cas où.
HMMM Non Désolé, cela me donne que le nom d'utilisateur ne doit utiliser que des lettres, des chiffres, des espaces et.-_ @ S'il vous plaît.
Vous devrez peut-être dire que la chaîne entière doit correspondre:
validates_format_of :username, :with => /^[-a-z]+$/
convenu mais comme / ^ [- a-z] $ / i pour l'insensibilité de l'affaire
Vous retourne toujours invalide: /
Testez-le dans IRB .. re = / ^ [- A-Z] $ / i; "foo" = ~ re
Il doit être / ^ [- a-z] + $ / code> (avec un i code> après la seconde barre oblique si vous le souhaitez en cas d'insensibilité de cas). Sans A +, vous dites que cela doit être exactement un caractère long.
^ et $ correspondent aux débuts et fin des lignes. Pour s'assurer qu'aucune nouvelle ligne utilise \ a \ z qui correspondent au début et à la fin de la chaîne.
@Canceylan, vous devriez juste être capable d'avoir un espace après la Z.
Changer simplement l'expression régulière pour correspondre à tous les caractères que vos états de spécification ( \ w code> couvrent tous les caractères alphanumériques - lettres et chiffres - et un soulignement). validates_format_of :username, :with => /[\w \.\-@]+/
Votre exemple est assez proche mais l'utilisateur peut toujours utiliser. et des espaces. mon ....... Nouvel utilisateur
Il n'y a pas de limite ici pour empêcher la correspondance des chaînes plus longues. Cela correspond à n'importe quelle chaîne contenant au moins un des caractères correspondants.
validates_format_of :username, :with => /^[\w\-@]*$/ Note the *, which means '0 or more'
Même problème ... des espaces et. est toujours autorisé: /
solution plus complexe mais réutilisable et avec une messagerie erronée à grain fin davantage.
validateur personnalisé: strong> p> app / validateurs / ustiname_convention_validator.rb em> p> (remarquez qu'il autorise ". - _ 'et n'autorise pas non ASCII, à des fins de complétude) p> > p> app / modèles / user.rb em> p>
Belle réponse - ça fait le mile supplémentaire.
C'est ce que j'ai proposé: validateate_format_of: nom d'utilisateur,: avec => / ^ [- A-Z \ D _] + $ /
Lorsque vous avez une réponse qui résout votre problème, vous devez le marquer comme accepté.