Validatore di espressioni Cron

Valida espressioni cron e ottieni un'analisi dettagliata campo per campo

Prova un esempio

Espressione cron

minute hour day(month) month day(week)

Espressione cron valida

Analisi dei campi

Minute*/15(0–59)

Corrisponde a: 0, 15, 30, 45

Hour0-6(0–23)

Corrisponde a: 0, 1, 2, 3, 4, 5, 6

Day of month1,15(1–31)

Corrisponde a: 1, 15

Month*(1–12)

Corrisponde a: all (1–12)

Day of week1-5(0–6)

Corrisponde a: 1, 2, 3, 4, 5

Cos'è la validazione delle espressioni cron?

La validazione delle espressioni cron è il processo di verifica che una stringa cron rispetti le regole di sintassi corrette prima di raggiungere uno scheduler. Un'espressione cron usa cinque campi separati da spazi (minuto, ora, giorno del mese, mese, giorno della settimana) per definire una pianificazione ricorrente. Se un campo contiene un valore fuori range, un operatore non valido o un errore strutturale come il numero sbagliato di campi, l'espressione verrà rifiutata dallo scheduler al momento del deploy oppure fallirà silenziosamente senza corrispondere ad alcun orario di attivazione.

Validare un'espressione cron online individua gli errori prima del deploy in produzione, evitando di aspettare un job mancante. Gli errori tipici includono: scrivere 25 nel campo dell'ora (range valido: 0-23), usare un passo di zero (*/0, che è indefinito), invertire i limiti del range (5-1 invece di 1-5), o aggiungere campi extra appartenenti a formati non standard come Quartz. Un verificatore di sintassi individua questi problemi immediatamente e indica esattamente quale campo è errato.

La validazione cron è diversa dal parsing cron. Un parser prende un'espressione valida e la traduce in una pianificazione leggibile. Un validatore risponde a una domanda più semplice: l'espressione è ben formata? Valida prima di fare il parsing — non ha senso passare un'espressione non valida a uno scheduler. Nelle pipeline CI/CD, la validazione automatica delle espressioni cron impedisce che pianificazioni errate vengano inserite nei file di configurazione.

Perché usare questo validatore cron?

Un'espressione cron ha regole di sintassi rigide, e gli scheduler forniscono messaggi di errore inconsistenti quando tali regole vengono violate. Alcuni scheduler rifiutano l'espressione con un errore criptico; altri la accettano silenziosamente e non la eseguono mai. Questo validatore ti fornisce una diagnosi chiara, campo per campo, prima del deploy.

Controllo della sintassi istantaneo
Incolla o digita un'espressione cron e verifica immediatamente se supera la validazione. Nessun invio di form, nessun ritardo. Il risultato si aggiorna mentre scrivi.
🔒
Elaborazione con privacy garantita
La validazione viene eseguita interamente nel browser. Le tue espressioni cron e le configurazioni di pianificazione non vengono mai inviate a un server né memorizzate.
🔍
Segnalazione degli errori campo per campo
Quando un'espressione non è valida, il validatore identifica quale campo ha causato l'errore e perché. Nessuna incertezza su quale dei cinque campi presenta il problema.
📋
Nessun account richiesto
Apri la pagina e inizia subito a verificare. Nessun login, nessuna API key, nessuna installazione. Funziona su qualsiasi dispositivo con un browser moderno, incluso il mobile.

Casi d'uso del validatore cron

Frontend Developer
Valida le espressioni cron inserite dagli utenti nelle interfacce di pianificazione prima di salvarle nel database. Individua gli errori di sintassi lato client invece di attendere il rifiuto dal backend.
Backend Engineer
Controlla le espressioni cron nelle configurazioni delle code di task (Celery beat, Hangfire, Quartz) durante il code review. Verifica che una stringa di pianificazione refactorizzata superi ancora la validazione della sintassi.
DevOps / SRE
Valida le pianificazioni cron nei manifest Kubernetes CronJob e nelle configurazioni delle pipeline CI/CD prima di applicarle. Evita che un errore di battitura in una pianificazione di backup passi inosservato finché il backup non viene mancato.
QA Engineer
Verifica che la tua applicazione rifiuti correttamente input cron non validi. Genera espressioni volutamente errate (valori fuori range, numero sbagliato di campi) e conferma che la gestione degli errori funzioni.
Data Engineer
Valida i trigger cron per gli Airflow DAG e le esecuzioni pianificate di dbt. Conferma che le pianificazioni di pipeline estratte da file di configurazione YAML o JSON siano sintatticamente corrette prima del deploy.
Studente / Principiante
Sperimenta con la sintassi cron e ricevi un feedback immediato su cosa è valido e cosa non funziona. Impara i range dei campi, gli operatori e i casi limite testando espressioni e leggendo i messaggi di errore.

Errori comuni nella sintassi cron

La tabella seguente elenca gli errori più frequenti nelle espressioni cron e le loro cause. Questi sono gli errori che compaiono ripetutamente nelle configurazioni in produzione e nelle pipeline CI/CD.

Tipo di erroreEsempioCosa è andato storto
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.

Espressioni cron valide e non valide

Un riferimento rapido di espressioni ben formate affiancate agli errori più comuni. Usalo per verificare rapidamente la tua espressione prima di incollarla in una configurazione dello scheduler.

Espressioni valide
* * * * *
0 9 * * 1-5
*/15 * * * *
0 0 1,15 * *
30 2 * * 0
0 */6 * * *
Espressioni non valide
0 9 * *4 campi, ne servono 5
0 25 * * *il massimo per l'ora è 23
*/0 * * * *il passo non può essere 0
0 9 * * 8il massimo per il giorno della settimana è 6
60 * * * *il massimo per il minuto è 59
0 0 0 * *il minimo per il giorno del mese è 1

Esempi di codice

Come validare espressioni cron a livello programmatico in JavaScript, Python, Go e Bash. Ogni esempio mostra come individuare la sintassi non valida ed estrarre un messaggio di errore 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"

Domande frequenti

Cosa rende non valida un'espressione cron?
Un'espressione cron è non valida quando viola le regole di sintassi del formato a cinque campi. Cause comuni: numero sbagliato di campi (meno di 5 o più di 5 per il cron standard), un valore fuori dal range consentito (ad es. ora 25, minuto 60, giorno del mese 0), un passo di zero (*/0), limiti del range invertiti (5-1), o caratteri non riconosciuti. L'espressione deve avere esattamente cinque campi separati da spazi con valori e operatori validi in ciascuno.
Un'espressione cron è valida anche se non viene mai eseguita?
Sì, sintatticamente. Un'espressione come 0 0 31 2 * (31 febbraio) supera la validazione della sintassi perché ogni campo contiene valori nei range consentiti. Ma non verrà mai attivata perché febbraio non ha mai 31 giorni. La maggior parte dei validatori controlla solo la sintassi, non la correttezza semantica. Se hai bisogno di individuare pianificazioni irraggiungibili, calcola i prossimi N orari di esecuzione e verifica se la lista è vuota.
Come valido un'espressione cron a 6 o 7 campi?
Il cron POSIX standard usa 5 campi. Quartz Scheduler aggiunge un campo per i secondi all'inizio (6 campi) e un campo opzionale per l'anno alla fine (7 campi). AWS EventBridge usa 6 campi. Questo validatore controlla il formato standard a 5 campi. Per validare espressioni Quartz o EventBridge, usa una libreria che supporti il formato esteso, come cron-parser con l'opzione extended in Node.js o quartz-cron in Java.
Posso usare nomi di giorni e mesi nelle espressioni cron?
La maggior parte delle implementazioni cron accetta abbreviazioni inglesi di tre lettere per i mesi (JAN-DEC) e i giorni della settimana (SUN-SAT). Non fanno distinzione tra maiuscole e minuscole in crontab, ma potrebbero farne in altri sistemi. I valori nominali non possono essere usati nei range su tutte le piattaforme: MON-FRI funziona in crontab ma non in ogni libreria. Se la portabilità è importante, usa valori numerici (1-5 per lunedì-venerdì).
Perché la mia espressione cron funziona in crontab ma fallisce in Kubernetes?
I Kubernetes CronJob usano lo stesso formato a 5 campi di crontab ma vengono analizzati dalla libreria cron di Go, che ha una validazione più rigida. Espressioni che crontab tollera (come spazi finali, o sia giorno del mese che giorno della settimana impostati su valori non wildcard) potrebbero comportarsi diversamente. Kubernetes utilizza per default il fuso orario del controller-manager (di solito UTC), non quello locale del nodo. Valida sempre l'espressione rispetto allo specifico scheduler su cui stai eseguendo il deploy.
Come devo validare le espressioni cron in una pipeline CI/CD?
Aggiungi un passaggio di validazione che venga eseguito prima del deploy. In un progetto Node.js, usa cron-parser o cron-validator in un file di test che legga le stringhe cron dalla configurazione e verifichi che si analizzino senza errori. In Python, usa croniter.is_valid(). In uno script shell, chiama la funzione di validazione ed esci con un codice non zero in caso di errore. Questo individua errori di battitura e di copia-incolla prima che raggiungano la produzione.
Qual è la differenza tra validazione cron e linting cron?
La validazione verifica se un'espressione è sintatticamente corretta: numero giusto di campi, valori nel range, operatori validi. Il linting va oltre, controllando errori probabili che sono tecnicamente validi: pianificazioni che non vengono mai eseguite (31 febbraio), job sovrapposti, valori di passo che saltano intervalli attesi (*/7 si azzera ogni ora), o pianificazioni senza documentazione del fuso orario. La validazione risponde a 'questa espressione verrà analizzata?' Il linting risponde a 'è probabilmente quella che intendevi?'