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

189

J'essaie d'écrire une expression régulière qui n'autorisera que des 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 ou ne compile pas. J'en avais un qui fonctionnait qui autoriserait simplement les lettres minuscules, ce qui était le suivant:

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

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

Peter Mortensen
la source
4
Le {} et le + font la même chose (en comptant), donc ils sont redondants, d'où l'erreur.
PhiLho
1
Vous devez supprimer le '+' de / ^ [az] {0,10} + $ /. Cela devrait être / ^ [az] {0,10} $ /
SO User
1
Notez que les modèles se ^[a-z]{0,10}+$compilent sur certains langages et que certains des plus notables sont Java, Perl (5.10+), PHP, Ruby (1.9+). Voir cette page pour plus de détails.
Jerry
Voir aussi la solution universelle via lookahead: Restreindre la longueur des caractères dans l'expression régulière
Vadzim

Réponses:

357

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

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

Les options sont:

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

Voir la référence des expressions régulières .

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

cletus
la source
Dans les outils de développement chrome avec ember, j'ai dû ignorer le début ^pour que la propriété corresponde UNIQUEMENT aux requêtes avec un nom comme 1234ou 5678, et j'ai dû inclure le signe $
Devin G Rhode
11

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

Joren
la source
9

Il peut être avantageux d'ajouter une correspondance gourmande à la fin de la chaîne, afin que vous puissiez accepter les chaînes> 10 et l'expression régulière ne renverra que les 10 premiers caractères. /^[a-z0-9]{0,10}$?/

jfarrell
la source
8

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 modèle, le dernier "+" devrait être supprimé.

Diego Séville
la source
7
grep '^[0-9]\{1,16\}' | wc -l

Donne les nombres avec le nombre de correspondances exactes avec limite

user6911841
la source