237 votes

Expression régulière pour limiter le nombre de caractères à 10

J'essaie d'écrire un expression régulière qui n'autorisera que les lettres minuscules et jusqu'à 10 caractères. Ce que j'ai jusqu'à présent ressemble à ceci :

pattern: /^[a-z]{0,10}+$/ 

Cela ne fonctionne pas et ne se compile pas. J'en avais un qui fonctionnait et qui n'autorisait que les lettres minuscules, c'était celui-ci :

pattern: /^[a-z]+$/ 

Mais je dois limiter le nombre de caractères à 10.

429voto

cletus Points 276888

Vous pouvez utiliser des accolades pour contrôler le nombre d'occurrences. Par exemple, cela signifie 0 à 10 :

/^[a-z]{0,10}$/

Les options sont les suivantes :

  • {Exactement 3 occurrences ;
  • {6,} Au moins 6 occurrences ;
  • {2,5} 2 à 5 occurrences.

Voir le référence à une expression régulière .

Votre expression avait un + après l'accolade de fermeture, d'où l'erreur.

13voto

Joren Points 7911

/^[a-z]{0,10}$/ devrait fonctionner. /^[a-z]{1,10}$/ si vous souhaitez faire correspondre au moins un caractère, comme par exemple /^[a-z]+$/ fait.

10voto

jfarrell Points 1236

Il peut être utile d'ajouter une correspondance gourmande à la fin de la chaîne, de sorte que vous puissiez accepter des chaînes > 10 et que la regex ne renvoie que les 10 premiers caractères. /^[a-z0-9]{0,10}$?/

10voto

user6911841 Points 101
grep '^[0-9]\{1,16\}' | wc -l

Donne les comptes avec une correspondance exacte avec limite.

9voto

Diego Sevilla Points 17274

Cela dépend beaucoup du programme que vous utilisez. Différents programmes ( Emacs , vi , sed et Perl ) utilisent des expressions régulières légèrement différentes. Dans ce cas, je dirais que dans le premier motif, le dernier "+" doit être supprimé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X