Question

J'ai besoin d'une expression rationnelle (php) pour correspondre aux règles de nom d'utilisateur de Yahoo:

  

Utilisez 4 à 32 caractères et commencez par une lettre. Vous pouvez utiliser des lettres, des chiffres, des traits de soulignement et un point (.).

Était-ce utile?

La solution

/^[A-Za-z](?=[A-Za-z0-9_.]{3,31}$)[a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*$/

Ou un peu plus court:

/^[a-z](?=[\w.]{3,31}$)\w*\.?\w*$/i

Autres conseils

/[a-zA-Z][a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*/

Et vérifiez si strlen ($ username) > = 4 et < = 32.

Une limite d'un point? C'est délicat.

Je ne suis pas un expert en regex, mais je pense que cela l’aurait, sauf pour cela:

[A-Za-z][A-Za-z0-9_.]{3,31}

Peut-être que vous pourriez vérifier pour le. exigence séparément?

À l'aide de lookaheads, vous pouvez effectuer les opérations suivantes:

^(?=[A-Za-z](?:\w*(?:\.\w*)?$))(\S{4,32})$

Parce que vous n'avez pas spécifié le type de regex dont vous aviez besoin, j'ai ajouté beaucoup de choses compatibles Perl 5. Comme (?: ... ) pour les parenthèses sans capture.

Remarque: , j'ai rajouté le fichier de fermeture manquant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top