Expresión regular para limitar el número de caracteres a 10

189

Estoy tratando de escribir una expresión regular que solo permita letras minúsculas y hasta 10 caracteres. Lo que tengo hasta ahora se ve así:

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

Esto no funciona ni se compila. Tenía una que funcionaba que solo permitía letras minúsculas, que era esta:

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

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

Peter Mortensen
fuente
44
El {} y el + hacen lo mismo (contando), por lo tanto son redundantes, de ahí el error.
PhiLho
1
Debería soltar el '+' de / ^ [az] {0,10} + $ /. Debería ser / ^ [az] {0,10} $ /
Usuario SO
1
Tenga en cuenta que el patrón se ^[a-z]{0,10}+$compila en algunos lenguajes y algunos de los más notables son Java, Perl (5.10+), PHP, Ruby (1.9+). Vea esta página para más detalles.
Jerry
Ver también solución universal a través de búsqueda anticipada: Restricción de la longitud de los caracteres en la expresión regular
Vadzim

Respuestas:

357

Puede usar 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 veces;
  • {6,} Al menos 6 veces;
  • {2,5} 2 a 5 apariciones.

Ver la referencia de expresión regular .

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

cletus
fuente
En las herramientas de desarrollo de Chrome con Ember, tuve que omitir el comienzo ^para que las propiedades coincidan SOLO con un nombre como 1234o 5678, y tuve que incluir el signo $
Devin G Rhode
11

/^[a-z]{0,10}$/Deberia trabajar. /^[a-z]{1,10}$/si quieres unir al menos un personaje, como lo /^[a-z]+$/hace.

Joren
fuente
9

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

jfarrell
fuente
8

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

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

Da los recuentos con recuento exacto con límite

usuario6911841
fuente