Puede utilizar gama cuantificador {min,max}
para especificar mínimo de 1 dígito y un máximo de 6 dígitos como:
^[0-9]{1,6}$
Explicación:
^ : Start anchor
[0-9] : Character class to match one of the 10 digits
{1,6} : Range quantifier. Minimum 1 repetition and maximum 6.
$ : End anchor
¿Por qué su expresión regular no funciona?
Usted eran casi cerca de la expresión regular:
^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
Desde que había escapado a la ?
precediendo con el \
, la ?
no era más que actúa como un meta-caracteres de expresiones regulares (por 0
o 1
repeticiones) pero estaba siendo tratado literalmente.
Para solucionarlo simplemente elimine el \
y usted está allí.
See it on rubular.
La expresión regular basada en el cuantificador es más corta, más legible y se puede extender fácilmente a cualquier cantidad de dígitos.
Su segunda expresión regular:
^[0-999999]$
es equivalente a:
^[0-9]$
que coincide exactamente con las cadenas de un dígito. Son equivalentes porque una clase de caracteres [aaaab]
es igual que [ab]
.
+1 para la explicación extendida –
Al igual que sugiere el título, se podría agregar una nota para que coincida con un número de 6 dígitos, uno debe usar '[0-9] {6}' y agregar anclas si es necesario. –