Solución:
Prueba esto
^(0?[1-9])|([1-4][0-9])|(50)$
La idea de esta expresión regular es dividir el problema en casos
- 0?[1-9] se encarga del caso de un solo dígito, lo que permite un 0 que precede opcionalmente
- [1-4][0-9] se ocupa de todos los números del 10 al 49. Esto también permite un 0 antes de un solo dígito
- 50 se ocupa de 50
Las expresiones regulares funcionan con caracteres (en este caso dígitos), no con números. Necesita tener un patrón separado para cada número de dígitos en su patrón y combinarlos con | (el operador OR) como han sugerido las otras respuestas. Sin embargo, considere simplemente verificar si el texto es numérico con una expresión regular (como [0-9]+
) y luego convertir a un número entero y verificar que el número entero esté dentro del rango.
No es posible realizar una verificación de rango con expresiones regulares. Puede, con algo de trabajo, desarrollar un patrón que reconozca un rango numérico, pero suele ser bastante complejo y difícil de modificar para un rango ligeramente diferente.
Es mejor dividir esto en dos partes.
-
Reconocer el patrón numérico (
^d+$
). -
Verifique el rango de ese número en un programa de aplicación.