Je souhaite valider le nom de connexion avec les caractères spéciaux [email protected]#S%^*()+_-?/<>:"';
. espace en utilisant une expression régulière en rubis sur des rails. Ces caractères spéciaux ne devraient pas être acceptables. Quel est le code pour ça?validation des caractères spéciaux
Répondre
Tout d'abord, je recommande d'utiliser une gemme pour la connexion, comme authlogic.
La gem peut être configurée pour valider l'adresse e-mail. Vous bénéficiez également de l'avantage de ne pas avoir à s'inquiéter de l'authentification de vos utilisateurs, etc.
Très facile à travailler avec.
Eh bien, je ne sais pas, mais c'est des rails ce que le regex ressemblerait dans toutes les autres langues que je connais:
^[^[email protected]#\$%\^\*\(\)\+_\-\?/\<\>:"';\. ]$
Le regex /^\w*$/
permet d'utiliser uniquement des lettres, des chiffres et un trait de soulignement.
De plus, vous avez un antisèche et un éditeur live regexp rubis sur http://rubular.com
Vous avez reçu regexps dans ce fil qui répond à votre question. Vous faites une approche de liste noire (en bloquant les personnages que vous ne voulez pas) mais est-ce vraiment ce qu'il y a de mieux? Je vois que vous n'avez pas couvert & ou ~, et il y a beaucoup d'autres caractères spéciaux qui sont probablement encore manquants.
Si vous essayez de bloquer des caractères spéciaux, je suggérerais une approche de liste blanche, selon la suggestion d'expression rationnelle de pablorc. C'est beaucoup plus large et ne liste que ce que vous voulez autoriser .... caractères non spéciaux: seulement des mots, des traits de soulignement et des nombres.
Je suis allé de l'avant et j'ai créé une méthode pour vous qui utilise une approche de liste blanche en utilisant cette expression rationnelle.
def valid_login?(str)
return true if (/^\w*$/.match(str))
return false
end
Cette méthode, valid_login ?, retourne vrai que si la chaîne contient des lettres, des chiffres ou soulignent, de sorte que tous vos caractères spéciaux (ainsi que tout autre que vous avez omis qui ne répondent pas à ces exigences), sont détectés en toute sécurité.
Utilisation:
> valid_login?("testy")
true
> valid_login?("a b")
false
> valid_login?("a'")
false
validates_format_of :username, :with => /^[A-Za-z0-9.&]*\z/
ne fonctionnera
validates_format_of :username, :with => /^[^[email protected]#S%\^\*()\+_-\?\/<>:\"';]+$/
- 1. validation des caractères spéciaux
- 2. validation des caractères spéciaux en utilisant JavaScript
- 3. Validation Javascript: Bloquer les caractères spéciaux
- 4. JSF: Validation pour les caractères spéciaux
- 5. Encodage des caractères spéciaux
- 6. Echapper des caractères spéciaux
- 7. Echapper des caractères spéciaux
- 8. Restriction des caractères spéciaux
- 9. Gestion des caractères spéciaux javascript
- 10. javascript remplacement des caractères spéciaux
- 11. NSPredicate des caractères spéciaux - iPhone
- 12. problème avec des caractères spéciaux
- 13. Caractères spéciaux en Python
- 14. stripslashes et caractères spéciaux?
- 15. Caractères spéciaux dans Flex
- 16. dépouilleront caractères spéciaux
- 17. Ajax Post caractères spéciaux
- 18. Regex Dépouiller Caractères spéciaux
- 19. Caractères spéciaux et multilangues
- 20. php et caractères spéciaux
- 21. XPath et caractères spéciaux
- 22. Incongruence de caractères spéciaux
- 23. caractères spéciaux javascript intégré
- 24. Traitement des caractères spéciaux MySQL Full Text
- 25. Remplacement des caractères spéciaux de la sortie
- 26. Javascript/jQuery - convertir des caractères html spéciaux
- 27. Expression régulière exclure des caractères spéciaux
- 28. suppression des caractères spéciaux dans asp
- 29. jQuery.Get, paramètre avec des caractères spéciaux
- 30. Problème FBJS avec des caractères spéciaux
* "Quel est le code pour cela?" * Pourquoi ne pas poster vos efforts ici afin que d'autres peuvent signaler la erreur en elle: bien meilleure façon d'apprendre des choses, IMO. –
Je suis un Nuby, mais vous devriez être des caractères légaux de liste blanche au lieu de bloquer les caractères spéciaux. Que faire si quelqu'un utilise ¨, ou §, ou ½? –