10
votes

Rails validant pleine_name

Hey ... Comment valideriez-vous un champ complet_Name (nom de famille)?


3 commentaires

besoin d'un bon reg de reg de validate_format_of


Quelles sont les valeurs acceptables et que ne sont pas? À mon avis, vous pouvez vérifier que s'il ne devrait pas y avoir de caractères spéciaux tels que # @% ... , des chiffres et devrait être au moins 1 espace.


Certaines personnes vont par un seul nom, alors même à la recherche d'un espace peut être problématique. Demandez-vous: Pourquoi Est-ce que je valonne un champ de nom? Quel problème essayez-vous de vous prévenir?


3 Réponses :


1
votes

Toute validation que vous effectuez ici est susceptible de décomposer sauf si elle est extrêmement générale. Par exemple, l'application d'une longueur minimale de 3 est probablement aussi raisonnable que vous pouvez obtenir sans entrer dans les spécificités de ce qui est entré.

Lorsque vous avez des noms comme "O'Malley" avec une Apostrophe, "Smith-Johnson" avec un tiret "Andrés" avec des personnages accentués ou des noms extrêmement courts tels que "VOY" avec pratiquement aucun personnage, comment Validez-vous sans exclure les cas légitimes? Ce n'est pas facile.


0 commentaires

32
votes

considère les noms comme:
  • ms. Jan Levinson-Gould Li>
  • dr. Martin Luther King, Jr. Li>
  • Brett d'Arras-d'HaudreRacey Li>
  • BRÜNO LI> ul>

    au lieu de valider les caractères présents, vous pouvez simplement vous assurer que certains caractères sont pas em> présent. p>

    Par exemple: h3 >
    NODE                     EXPLANATION
    --------------------------------------------------------------------------------
      \A                       the beginning of the string
    --------------------------------------------------------------------------------
      [^`!@#\$%\^&*+_=\d]+     any character except: '`', '!', '@', '#',
                               '\$', '%', '\^', '&', '*', '+', '_', '=',
                               digits (0-9) (1 or more times (matching
                               the most amount possible))
    --------------------------------------------------------------------------------
      \z                       the end of the string
    


4 commentaires

J'ai trouvé ce problème sur Rails 4.0.1 L'expression régulière fournie utilise des ancrages multilignes (^ ou $), ce qui peut présenter un risque de sécurité. Voulez-vous utiliser \ a et \ z, ou oublié d'ajouter la: MULLINE => VRAI Option? Mais il a été résolu avec l'ajout: multiline => true validateate_format_of: nom,: avec => / ^ [^ 0-9`! @ # \ $% \ ^ & * + _ = \] + $ /,: Multiligne => vrai


@ Barek2k2, je devrais utiliser \ a et \ z ici. Merci pour le commentaire.


Peu tard, gardez cependant à l'esprit que cette regex approuve le nom étant ------


Considérez des locuteurs non anglais (noms en Cyrillic, etc.). C'est le bordel.



1
votes

au moins un espace et au moins 4 caractères (y compris l'espace) xxx


0 commentaires