expresión regular de 6 dígitos


Necesito una expresión regular que requiera al menos UN dígito y SEIS como máximo.

He resuelto esto, pero ninguno de ellos parece funcionar.

^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$

^[0-999999]$

¿Alguna otra sugerencia?

Author: Andrew, 2011-01-21

4 answers

Puede usar el cuantificador de rango {min,max} para especificar un 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é tu expresión regular no funcionó ?

Estabas casi cerca en la expresión regular:

^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$

Puesto que había escapado del ? precediéndolo con el \, el ? ya no estaba actuando como un meta-carácter regex ( para 0 o 1 repeticiones) sino que estaba siendo tratado literalmente.

Para arreglarlo basta con eliminar el \ y tú estás ahí.

Ver en rubular.

La expresión regular basada en cuantificadores es más corta, más legible y se puede extender fácilmente a cualquier número de dígitos.

Su segunda expresión regular:

^[0-999999]$

Es equivalente a:

^[0-9]$

Que coincide con cadenas con exactamente un dígito. Son equivalentes porque una clase de caracteres [aaaab] es igual a [ab].

 95
Author: codaddict,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-21 12:07:40
  ^\d{1,6}$

....................

 17
Author: LukeH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-21 11:50:00

Usted podría intentar

^[0-9]{1,6}$

Debería funcionar.

 7
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-21 11:50:44

^[0-9]{1,6}$ debería hacerlo. No lo sé VB.NET lo suficientemente bueno para saber si es lo mismo allí.

Para ejemplos, echa un vistazo a la Wikipedia.

 3
Author: eckes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-21 11:49:39