Je vous suggère de faire deux contrôles - une longueur et un pour le contenu en fonction de la fait que vous voulez probablement seulement un point dans le nom, plutôt que n'importe quel nombre de points. Je suppose que les noms comme username
et user.name
sont les seuls formats autorisés.
Cela devrait obtenir le contenu (mais permet souligne aussi):
^\w+(\.\w+)?$
Si vous ne voulez pas underscores, vous pouvez ensuite utiliser [0-9a-zA-Z]+
en place de \w+
. Pour expliquer, il correspondra à toute chaîne constituée d'un ou de plusieurs caractères, suivie exactement par 0 ou 1 d'un point suivi d'un ou plusieurs caractères. Il doit également correspondre au début et à la fin de la chaîne, c'est-à-dire qu'aucun autre caractère n'est autorisé dans la chaîne.
Ensuite, vous avez seulement besoin d'obtenir la longueur avec un simple contrôle de longueur.
Je pense que vous devez être un peu plus explicite. Je doute que vous vouliez un nom d'utilisateur qui se compose de tous les points. Je pense que ce serait plus comme 'username' ou' user.name' sont autorisés, mais 'user.',' .user', et '......' ne sont pas autorisés. – tvanfosson
Je remarque qu'il y a des milliers de lettres que vous excluez. Est-ce intentionnel? –
@tvanfosson Eh bien, c'est la fonctionnalité d'administration, donc il y aura un peu de réflexion de l'utilisateur aussi, mais vous avez raison, mon algorithme ne limite pas cela – Michel