2009-10-30 29 views
111

Estoy tratando de escribir un regular expression que solo permitirá letras minúsculas y hasta 10 caracteres. Lo que tengo hasta ahora se parece a esto:Expresión regular para limitar el número de caracteres a 10

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

Esto no funciona o compila. Tenía un funcionamiento uno que acaba de permitir que las letras minúsculas que era esto:

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

Pero necesito para limitar el número de caracteres a 10.

+4

El {} y el + hacer lo mismo (contando), por lo que son redundantes, de ahí el error. – PhiLho

+1

Debería descartar el '+' de/^ [a-z] {0,10} + $ /. Debería ser/^ [az] {0,10} $/ –

+1

Tenga en cuenta que el patrón '^ [az] {0,10} + $' se compila en algunos idiomas y algunos de los más notables son Java, Perl (5.10+) , PHP, Ruby (1.9+). Ver [esta página] (http://www.regular-expressions.info/possessive.html) para más detalles. – Jerry

Respuesta

247

Puede utilizar llaves para controlar el número de ocurrencias. Por ejemplo, esto significa 0 a 10:

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

Las opciones son:

  • {3} Exactamente 3 ocurrencias;
  • {6,} Al menos 6 apariciones;
  • {2,5} 2 a 5 veces.

Ver el regular expression reference.

Su expresión tenía un + después de la llave de cierre, de ahí el error.

5

Depende mucho del programa que esté utilizando. Los diferentes programas (Emacs, vi, sed y Perl) utilizan expresiones regulares ligeramente diferentes. En este caso, diría que en el primer patrón, el último "+" debería eliminarse.

8

/^[a-z]{0,10}$/ debería funcionar. /^[a-z]{1,10}$/ si desea hacer coincidir al menos un carácter, como /^[a-z]+$/.

7

Podría ser beneficioso agregar coincidencia codiciosa al final de la cadena, por lo que puede aceptar cadenas> 10 y la expresión regular solo volverá a los primeros 10 caracteres. /^[a-z0-9]{0,10}$?/

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

Brinda cuenta con coincidencia exacta cuentan con un límite

Cuestiones relacionadas