2011-10-23 26 views
17

necesito una expresión regular que validar para un número con longitud de 4, 5, 6expresión regular para número con longitud de 4, 5 o 6

I utiliza^[0-9] {4} para validar para un número de 4, pero no sé cómo incluir la validación de 5 y 6.

+0

Try '[0-9] {4,6}' –

+0

Gracias resolvió mi problema, por favor agregarlo como una respuesta –

+1

Siempre se debe especificar el idioma que está utilizando sus expresiones regulares de. Mientras que para las expresiones regulares simples no podría ser importante, las más complejas dependen del idioma de inicio. Incluso está escrito en la etiqueta. – xanatos

Respuesta

44

Prueba esto:

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

{4,6} = entre 4 y 6 caracteres, inclusive.

+1

Hola, necesito validar solo la longitud de 4 o 6. ¿Cómo puedo lograr esto. Si el usuario da una longitud de 5 números. Debería dar error wrt al patrón. Por favor, ayuda – Hema

1

Si el idioma que utiliza acepta {}, puede usar [0-9]{4,6}.

De lo contrario, tendrá que usar [0-9][0-9][0-9][0-9][0-9]?[0-9]?.

9

Tenga en cuenta que, como está escrito, la solución de Peter "aceptará" 0000. Si desea validar los números entre 1000 y 999999, entonces eso es otro problema :-)

^[1-9][0-9]{3,5}$ 

por ejemplo bloqueará la inserción 0 al principio de la cadena.

Si desea aceptar 0 relleno, pero solo hasta un largo de 6, para que 001000 sea válido, entonces se vuelve más complejo. Si utilizamos preanálisis, entonces podemos escribir algo como

^(?=[0-9]{4,6}$)0*[1-9][0-9]{3,}$ 

Este comprueba en primer lugar si la cadena es larga 4-6 (?=[0-9]{4,6}$), entonces se salta los 0s 0* y la búsqueda de un no-cero [1-9] seguido por al menos 3 dígitos [0-9]{3,}.

+0

En cuanto a su segunda expresión regular: '^ (? = [0-9] {4,6} $) 0 * [1-9] [0-9] {3,} $' - El '{3,} 'erróneamente requiere tres dígitos más allá del primer' [1-9] ', y por lo tanto no podrá hacer coincidir números tales como:' 000001' y '0123'. Como su búsqueda anticipada ya asegura el requisito de longitud, el '{3,}' puede escribirse como una estrella '*'. (¿O es este el comportamiento que pretendía?) – ridgerunner

+0

@ridgerunner Como he escrito, el número mínimo es 1000, entonces 1-9 y tres dígitos libres. Entonces es correcto Estas expresiones regulares intentan verificar el valor y no solo la sintaxis. – xanatos

6

[0-9]{4,6} se puede acortar a \d{4,6}

Cuestiones relacionadas