web-dev-qa-db-fra.com

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

J'essaie d'écrire un expression régulière qui ne permettra que des lettres minuscules et jusqu'à 10 caractères. Ce que j'ai jusqu'ici ressemble à ceci:

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

Cela ne fonctionne pas ou ne compile pas. J'en avais un qui fonctionnait, mais qui autorisait seulement les lettres minuscules:

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

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

161
fiktionvt

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:

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

Voir le référence de l'expression régulière .

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

320
cletus

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

10
Joren

Il peut être intéressant d’ajouter une correspondance gourmande à la fin de la chaîne, de sorte que vous puissiez accepter des chaînes supérieures à 10 et que l’expression régulière ne renvoie que les 10 premiers caractères. /^[a-z0-9]{0,10}$?/

9
jfarrell

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é.

8
Diego Sevilla
grep '^[0-9]\{1,16\}' | wc -l

Donne les comptes avec le nombre de correspondances exactes avec la limite

6
user6911841