Validador de expresiones Cron

Valida expresiones cron y ve un desglose detallado campo por campo

Prueba un ejemplo

Expresión cron

minute hour day(month) month day(week)

Expresión cron válida

Desglose de campos

Minute*/15(0–59)

Se expande a: 0, 15, 30, 45

Hour0-6(0–23)

Se expande a: 0, 1, 2, 3, 4, 5, 6

Day of month1,15(1–31)

Se expande a: 1, 15

Month*(1–12)

Se expande a: all (1–12)

Day of week1-5(0–6)

Se expande a: 1, 2, 3, 4, 5

¿Qué es la validación de expresiones cron?

La validación de expresiones cron es el proceso de comprobar si una cadena cron sigue las reglas de sintaxis correctas antes de que llegue a un planificador. Una expresión cron usa cinco campos separados por espacios (minuto, hora, día del mes, mes, día de la semana) para definir una programación recurrente. Si algún campo contiene un valor fuera de rango, un operador inválido o un error estructural como un número de campos incorrecto, la expresión será rechazada por el planificador en el momento del despliegue o fallará silenciosamente sin coincidir con ningún momento de disparo.

Validar una expresión cron online detecta errores antes que desplegar en producción y esperar a que se pierda una tarea. Los errores típicos incluyen escribir 25 en el campo de hora (rango válido: 0-23), usar un paso de cero (*/0, que no está definido), invertir los límites de un rango (5-1 en lugar de 1-5), o añadir campos adicionales que pertenecen a formatos no estándar como Quartz. Un verificador de sintaxis señala estos problemas al instante e indica exactamente qué campo es incorrecto.

La validación cron es diferente del análisis cron. Un analizador toma una expresión válida y la traduce a una programación legible. Un validador responde una pregunta más sencilla: ¿está bien formada esta expresión? Valida antes de analizar — no tiene sentido pasar una expresión inválida a un planificador. En pipelines de CI/CD, la validación automática de cron evita que programaciones rotas lleguen a los archivos de configuración.

¿Por qué usar este validador de cron?

Una expresión cron tiene reglas de sintaxis estrictas, y los planificadores dan mensajes de error inconsistentes cuando se violan esas reglas. Algunos planificadores rechazan la expresión con un error críptico; otros la aceptan silenciosamente y nunca la disparan. Este validador te da un diagnóstico claro, campo por campo, antes de desplegar.

Verificación de sintaxis instantánea
Pega o escribe una expresión cron y comprueba al instante si pasa la validación. Sin envío de formulario, sin espera. El resultado se actualiza mientras escribes.
🔒
Procesamiento con privacidad
La validación se ejecuta completamente en tu navegador. Tus expresiones cron y configuraciones de programación nunca se envían a un servidor ni se almacenan en ningún lugar.
🔍
Informe de errores campo por campo
Cuando una expresión es inválida, el validador identifica qué campo causó el error y por qué. Sin adivinar cuál de los cinco campos tiene el problema.
📋
Sin cuenta requerida
Abre la página y empieza a verificar. Sin inicio de sesión, sin clave API, sin instalación. Funciona en cualquier dispositivo con un navegador moderno, incluido el móvil.

Casos de uso del validador de cron

Desarrollador frontend
Valida las expresiones cron introducidas por los usuarios en interfaces de programación antes de guardarlas en la base de datos. Detecta errores de sintaxis en el cliente en lugar de esperar un rechazo del backend.
Ingeniero backend
Comprueba las expresiones cron en configuraciones de colas de tareas (Celery beat, Hangfire, Quartz) durante la revisión de código. Verifica que una cadena de programación refactorizada sigue pasando la validación de sintaxis.
DevOps / SRE
Valida las programaciones cron en manifiestos de Kubernetes CronJob y configuraciones de pipelines de CI/CD antes de aplicarlos. Evita que una errata en una programación de copia de seguridad pase desapercibida hasta que se pierda la copia.
Ingeniero de QA
Prueba que tu aplicación rechaza correctamente la entrada cron inválida. Genera expresiones conocidas como incorrectas (valores fuera de rango, número de campos incorrecto) y confirma que el manejo de errores funciona.
Ingeniero de datos
Valida los disparadores cron para DAGs de Airflow y ejecuciones programadas de dbt. Confirma que las programaciones de pipeline extraídas de archivos de configuración YAML o JSON son sintácticamente correctas antes de desplegar.
Estudiante / Aprendiz
Experimenta con la sintaxis cron y obtén retroalimentación instantánea sobre qué es válido y qué falla. Aprende los rangos de campos, operadores y casos límite probando expresiones y leyendo los mensajes de error.

Errores comunes de sintaxis cron

La tabla a continuación lista los errores más frecuentes en expresiones cron y sus causas. Son los errores que aparecen repetidamente en configuraciones de producción y pipelines de CI/CD.

Tipo de errorEjemploQué salió mal
Too few fields0 9 * *Missing the day-of-week field. Standard cron requires exactly 5 fields.
Too many fields0 0 9 * * 1 2026Extra fields. Some tools add seconds or year, but standard cron uses 5.
Value out of range0 25 * * *Hour field accepts 0-23. Value 25 exceeds the maximum.
Invalid step base0 0 32/2 * *Day-of-month starts at 32, which exceeds the 1-31 range.
Step of zero*/0 * * * *Step value must be 1 or greater. Zero creates an infinite loop.
Empty field0 9 * * 1Double space creates an empty field. Each field needs a value.
Invalid character0 9 * * Mon-FryTypo in day name. Use three-letter abbreviations: MON, TUE, WED, THU, FRI, SAT, SUN.
Reversed range0 9 * * 5-1Range end (1) is less than start (5). Write 1-5 or use a list: 5,6,0,1.

Expresiones cron válidas e inválidas

Una referencia rápida de expresiones bien formadas junto a errores comunes. Úsala para verificar tu expresión antes de pegarla en una configuración de planificador.

Expresiones válidas
* * * * *
0 9 * * 1-5
*/15 * * * *
0 0 1,15 * *
30 2 * * 0
0 */6 * * *
Expresiones inválidas
0 9 * *4 campos, se necesitan 5
0 25 * * *el máximo del campo hora es 23
*/0 * * * *el paso no puede ser 0
0 9 * * 8el máximo del día de la semana es 6
60 * * * *el máximo del campo minuto es 59
0 0 0 * *el mínimo del día del mes es 1

Ejemplos de código

Cómo validar expresiones cron mediante programación en JavaScript, Python, Go y Bash. Cada ejemplo muestra cómo detectar sintaxis inválida y extraer un mensaje de error significativo.

JavaScript (Node.js)
import { parseExpression } from 'cron-parser';

// Validate a cron expression by attempting to parse it
function validateCron(expr) {
  try {
    parseExpression(expr);
    return { valid: true, error: null };
  } catch (err) {
    return { valid: false, error: err.message };
  }
}

console.log(validateCron('0 9 * * 1-5'));
// → { valid: true, error: null }

console.log(validateCron('0 25 * * *'));
// → { valid: false, error: "Constraint error, got value 25 expected range 0-23" }

// Validate with field-level detail using cron-validator
import { isValidCron } from 'cron-validator';

isValidCron('*/15 * * * *');           // → true
isValidCron('*/15 * * * *', { seconds: true }); // → false (expects 6 fields)
isValidCron('0 0 31 2 *');             // → true (syntactically valid, Feb 31 never fires)
Python
from croniter import croniter

# Validate by checking if croniter can parse the expression
def validate_cron(expr: str) -> dict:
    if croniter.is_valid(expr):
        return {"valid": True, "error": None}
    # Get a more specific error message
    try:
        croniter(expr)
    except (ValueError, KeyError) as e:
        return {"valid": False, "error": str(e)}
    return {"valid": False, "error": "Unknown error"}

print(validate_cron("0 9 * * 1-5"))
# → {'valid': True, 'error': None}

print(validate_cron("0 25 * * *"))
# → {'valid': False, 'error': '...out of range...'}

print(validate_cron("* * *"))
# → {'valid': False, 'error': 'Exactly 5 or 6 columns...'}

# Field-level validation
from crontab import CronTab

cron = CronTab(tab="")
job = cron.new(command="/bin/true")
try:
    job.setall("0 9 * * 1-5")
    print(job.is_valid())  # → True
except Exception as e:
    print(f"Invalid: {e}")
Go
package main

import (
    "fmt"
    "github.com/robfig/cron/v3"
)

// ValidateCron checks whether a 5-field cron expression is syntactically correct
func ValidateCron(expr string) (bool, error) {
    parser := cron.NewParser(
        cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow,
    )
    _, err := parser.Parse(expr)
    if err != nil {
        return false, err
    }
    return true, nil
}

func main() {
    exprs := []string{
        "0 9 * * 1-5",   // valid
        "0 25 * * *",    // invalid: hour 25
        "*/15 * * * *",  // valid
        "0 0 32 * *",    // invalid: day 32
    }

    for _, e := range exprs {
        ok, err := ValidateCron(e)
        if ok {
            fmt.Printf("%-20s  VALID
", e)
        } else {
            fmt.Printf("%-20s  INVALID: %v
", e, err)
        }
    }
}
Bash
#!/bin/bash

# Validate cron syntax using Python one-liner
validate_cron() {
  python3 -c "
from croniter import croniter
import sys
expr = sys.argv[1]
if croniter.is_valid(expr):
    print(f'VALID: {expr}')
    sys.exit(0)
else:
    print(f'INVALID: {expr}')
    sys.exit(1)
" "$1"
}

validate_cron "0 9 * * 1-5"     # → VALID: 0 9 * * 1-5
validate_cron "0 25 * * *"      # → INVALID: 0 25 * * *

# Quick regex pre-check (catches field count and obvious issues)
cron_regex='^([0-9*/,-]+\s+){4}[0-9*/,-]+$'
echo "*/5 * * * *" | grep -Eq "$cron_regex" && echo "passes basic check"
echo "* * *" | grep -Eq "$cron_regex" || echo "fails basic check"

Preguntas frecuentes

¿Qué hace inválida a una expresión cron?
Una expresión cron es inválida cuando viola las reglas de sintaxis del formato de cinco campos. Causas comunes: número incorrecto de campos (menos de 5 o más de 5 para cron estándar), un valor fuera del rango permitido (por ejemplo, hora 25, minuto 60, día del mes 0), un paso de cero (*/0), límites de rango invertidos (5-1), o caracteres no reconocidos. La expresión debe tener exactamente cinco campos separados por espacios con valores y operadores válidos en cada uno.
¿Es válida una expresión cron que nunca se dispara?
Sí, sintácticamente. Una expresión como 0 0 31 2 * (el 31 de febrero) pasa la validación de sintaxis porque cada campo contiene valores dentro de los rangos permitidos. Pero nunca se disparará porque febrero nunca tiene 31 días. La mayoría de los validadores comprueban solo la sintaxis, no la corrección semántica. Si necesitas detectar programaciones inalcanzables, calcula las próximas N ejecuciones y comprueba si la lista está vacía.
¿Cómo valido una expresión cron de 6 o 7 campos?
El cron POSIX estándar usa 5 campos. Quartz Scheduler añade un campo de segundos al principio (6 campos) y un campo de año opcional al final (7 campos). AWS EventBridge usa 6 campos. Este validador comprueba el formato estándar de 5 campos. Para validar expresiones de Quartz o EventBridge, usa una librería que admita el formato extendido, como cron-parser con la opción extended en Node.js o quartz-cron en Java.
¿Puedo usar nombres de días y meses en las expresiones cron?
La mayoría de las implementaciones cron aceptan abreviaturas de tres letras en inglés para los meses (JAN-DEC) y los días de la semana (SUN-SAT). No distinguen entre mayúsculas y minúsculas en crontab, pero pueden ser sensibles a las mayúsculas en otros sistemas. Los valores con nombre no se pueden usar en rangos en todas las plataformas: MON-FRI funciona en crontab pero no en todas las librerías. Si la portabilidad importa, usa valores numéricos (1-5 para lunes a viernes).
¿Por qué mi expresión cron funciona en crontab pero falla en Kubernetes?
Los CronJobs de Kubernetes usan el mismo formato de 5 campos que crontab, pero son analizados por la librería cron de Go, que tiene una validación más estricta. Las expresiones que crontab tolera (como espacios finales, o campos día-del-mes y día-de-la-semana ambos configurados con valores no comodín) pueden comportarse de forma diferente. Kubernetes también usa por defecto la zona horaria del controller-manager (normalmente UTC), no la zona horaria local del nodo. Valida siempre la expresión contra el planificador específico en el que vas a desplegar.
¿Cómo debo validar expresiones cron en un pipeline de CI/CD?
Añade un paso de validación que se ejecute antes del despliegue. En un proyecto Node.js, usa cron-parser o cron-validator en un archivo de pruebas que lea las cadenas cron de tu configuración y compruebe que se analizan sin error. En Python, usa croniter.is_valid(). En un script de shell, llama a la función de validación y sal con un código distinto de cero si falla. Esto detecta errores tipográficos y de copia y pega antes de que lleguen a producción.
¿Cuál es la diferencia entre la validación cron y el linting cron?
La validación comprueba si una expresión es sintácticamente correcta: número de campos correcto, valores en rango, operadores válidos. El linting va más allá comprobando errores probables que son técnicamente válidos: programaciones que nunca se disparan (31 de febrero), tareas solapadas, valores de paso que omiten intervalos esperados (*/7 se reinicia cada hora), o programaciones sin documentación de zona horaria. La validación responde '¿se analizará esto?' El linting responde '¿es esto probablemente lo que querías?'