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.


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.


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.


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}$?/


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


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

Donne les nombres avec le nombre de correspondances exactes avec limite

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.