2011-04-13 12 views
6

Todavía soy un principiante en regex, así que esto está un poco por encima de mí actualmente.Regex para comprobación de número debajo de un valor

necesito para validar un número de entrada de dos caracteres y no puede haber más que el valor 12.

Los dos números fáciles:

/^\d{1,2}$/ 

A continuación, compruebe que si hay dos números entonces el primero debe ser 0 o 1, y el segundo debe ser 0, 1 o 2. Esa parte que no sé cómo expresar, regularmente ...

Y también si es posible me gustaría tenerlo en una sola declaración de expresiones regulares.

Cualquier ayuda apreciada.

+1

Dudo que regex sea la mejor manera de hacerlo. Qué idioma estás usando? – lonesomeday

+0

Entonces, p. '09' no está permitido? Tiene dos caracteres y el segundo no está en '[012]'. – Piskvor

+0

Es solo una simple validación de mes en entrada numérica, validada por un motor de validación js ya extenso, razón por la cual la expresión regular es que necesito practicar con expresiones regulares y si no ahora cuándo, y ahora simplemente estoy agregando a las reglas ya existentes. No estoy usando los valores para los cálculos, solo la entrada de fecha para que las validaciones de caracteres parezcan suficientes. Gracias a todos por las respuestas. – Forteasics

Respuesta

14

Regex no es adecuado para tratar con rangos como esta, pero de todos modos este debería funcionar:

/^(0?[1-9]|1[012])$/ 

Descripción:

^  match start of the string 
(0?  optional zero 
[1-9]  any number between 1 and 9 
|1[012]) or match 1 followed by either a 0, 1, 2 i.e. 10, 11, 12. 
$   match end of string 
+0

¿Pero agrega un 0 opcional? delante de la primera parte solo en el caso – frisco

+0

Allí, he actualizado la expresión regular. Debe permitir 01, 02, 03, etc.¿Supongo que esto es para validar una fecha de mes? ;-) Si no desea permitir 012,013, etc., simplemente mueva el 0? para dentro de los primeros paréntesis:/^ (0? [1-9] | 1 [012]) $/ –

+0

sí, eso es perfecto gracias – Forteasics

2

Para algo como esto (prueba si un número entero es menor que un valor dado), realmente no debería usar una expresión regular.

En su lugar, sólo tiene que utilizar una condición simple como éste (la sintaxis dependerá de la lengua que está trabajando):

if ($variable <= 12) { 
    // OK 
} 
else { 
    // Not OK 
} 
+0

Estoy usando un motor de validación js (Form Validation Engine 2.0) por lo que escribir otra verificación o modificar la expresión regular es bastante simple, pero prefiero expandir la expresión regular porque soy muy débil. – Forteasics

0

Para el "carácter ya sea X o Y o Z o ... "está la clase carácter, expresada entre corchetes:

[012] 

significa" cualquier carácter de 0, 1 o 2 ".

0
(0[0-9])|(1[0-2]) 

Esto coincide con un cero, seguido por un dígito arbitrario, o un uno, seguido por 0, 1 o 2

0

0 [0-9] | 1 [0-2]

Description: 

[0-9] : number between 00 and 09 
    | : or 
1[0-2] : and if starting with 1, next number should be between 0 -1 (testing 10-12) 
Cuestiones relacionadas