Cron Expression Validator

Cron-Ausdrücke validieren und eine detaillierte feldweise Aufschlüsselung erhalten

Beispiel ausprobieren

Cron-Ausdruck

minute hour day(month) month day(week)

Gültiger Cron-Ausdruck

Feldaufschlüsselung

Minute*/15(0–59)

Erweitert zu: 0, 15, 30, 45

Hour0-6(0–23)

Erweitert zu: 0, 1, 2, 3, 4, 5, 6

Day of month1,15(1–31)

Erweitert zu: 1, 15

Month*(1–12)

Erweitert zu: all (1–12)

Day of week1-5(0–6)

Erweitert zu: 1, 2, 3, 4, 5

Was ist Cron-Ausdrucks-Validierung?

Die Validierung eines Cron-Ausdrucks ist der Prozess, mit dem geprüft wird, ob ein Cron-String die korrekten Syntaxregeln einhält, bevor er einen Scheduler erreicht. Ein Cron-Ausdruck verwendet fünf durch Leerzeichen getrennte Felder (Minute, Stunde, Monatstag, Monat, Wochentag), um einen wiederkehrenden Zeitplan zu definieren. Enthält ein Feld einen Wert außerhalb des gültigen Bereichs, einen ungültigen Operator oder einen Strukturfehler wie eine falsche Feldanzahl, wird der Ausdruck vom Scheduler entweder zur Deployment-Zeit abgelehnt oder er trifft lautlos keinen Auslösezeitpunkt.

Die Online-Validierung eines Cron-Ausdrucks deckt Fehler früher auf als das Deployment in die Produktion und das Warten auf einen ausgefallenen Job. Typische Fehler sind: 25 im Stundenfeld (gültiger Bereich: 0-23), ein Schrittwert von null (*/0, der undefiniert ist), umgekehrte Bereichsgrenzen (5-1 statt 1-5) oder zusätzliche Felder, die zu nicht-standardmäßigen Formaten wie Quartz gehören. Ein Syntax-Checker markiert diese Probleme sofort und zeigt an, welches Feld fehlerhaft ist.

Cron-Validierung unterscheidet sich vom Cron-Parsing. Ein Parser nimmt einen gültigen Ausdruck und übersetzt ihn in einen menschenlesbaren Zeitplan. Ein Validator beantwortet eine einfachere Frage: Ist dieser Ausdruck wohlgeformt? Validiere, bevor du parsest — es hat keinen Sinn, einen ungültigen Ausdruck an einen Scheduler zu übergeben. In CI/CD-Pipelines verhindert automatisierte Cron-Validierung, dass fehlerhafte Zeitpläne in Konfigurationsdateien eingebunden werden.

Warum diesen Cron-Validator verwenden?

Ein Cron-Ausdruck hat strenge Syntaxregeln, und Scheduler liefern bei Regelverstößen inkonsistente Fehlermeldungen. Manche Scheduler lehnen den Ausdruck mit einem kryptischen Fehler ab; andere akzeptieren ihn lautlos und lösen nie aus. Dieser Validator gibt dir eine klare, feldweise Diagnose, bevor du deployest.

Sofortige Syntaxprüfung
Füge einen Cron-Ausdruck ein oder tippe ihn ein und sieh sofort, ob er die Validierung besteht. Kein Formular, keine Verzögerung. Das Ergebnis aktualisiert sich während der Eingabe.
🔒
Datenschutzorientierte Verarbeitung
Die Validierung läuft vollständig in deinem Browser. Deine Cron-Ausdrücke und Zeitplankonfigurationen werden nie an einen Server gesendet oder gespeichert.
🔍
Feldweise Fehlerberichte
Ist ein Ausdruck ungültig, identifiziert der Validator, welches Feld den Fehler verursacht hat und warum. Kein Rätselraten, welches der fünf Felder das Problem enthält.
📋
Kein Konto erforderlich
Öffne die Seite und beginne mit der Prüfung. Keine Anmeldung, kein API-Schlüssel, keine Installation. Funktioniert auf jedem Gerät mit einem modernen Browser, einschließlich Mobilgeräten.

Anwendungsfälle für den Cron-Validator

Frontend-Entwickler
Validiere Cron-Ausdrücke, die Nutzer in Planungs-UIs eingeben, bevor sie in die Datenbank gespeichert werden. Syntaxfehler auf der Client-Seite abfangen, anstatt auf eine Backend-Ablehnung zu warten.
Backend-Entwickler
Cron-Ausdrücke in Task-Queue-Konfigurationen (Celery Beat, Hangfire, Quartz) beim Code-Review prüfen. Verifizieren, dass ein überarbeiteter Zeitplan-String noch die Syntaxvalidierung besteht.
DevOps / SRE
Cron-Zeitpläne in Kubernetes CronJob-Manifests und CI/CD-Pipeline-Configs vor dem Anwenden validieren. Verhindere, dass ein Tippfehler in einem Backup-Zeitplan unbemerkt bleibt, bis das Backup ausbleibt.
QA-Ingenieur
Teste, ob deine Anwendung ungültige Cron-Eingaben korrekt ablehnt. Generiere bekannte Fehlerausdrücke (Werte außerhalb des Bereichs, falsche Feldanzahl) und überprüfe, ob die Fehlerbehandlung funktioniert.
Dateningenieur
Validiere Cron-Trigger für Airflow-DAGs und geplante dbt-Läufe. Bestätige, dass aus YAML- oder JSON-Konfigurationsdateien geparste Pipeline-Zeitpläne syntaktisch korrekt sind, bevor du deployest.
Student / Lernender
Experimentiere mit Cron-Syntax und erhalte sofortiges Feedback, was gültig ist und was nicht. Lerne die Feldbereiche, Operatoren und Sonderfälle kennen, indem du Ausdrücke testest und die Fehlermeldungen liest.

Häufige Cron-Syntaxfehler

Die folgende Tabelle listet die häufigsten Fehler bei Cron-Ausdrücken auf und deren Ursachen. Das sind die Fehler, die in Produktionskonfigurationen und CI/CD-Pipelines immer wieder auftauchen.

FehlertypBeispielWas schiefgelaufen ist
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.

Gültige vs. ungültige Cron-Ausdrücke

Eine schnelle Referenz mit wohlgeformten Ausdrücken neben häufigen Fehlern. Verwende dies zur Überprüfung deines Ausdrucks, bevor du ihn in eine Scheduler-Konfiguration einfügst.

Gültige Ausdrücke
* * * * *
0 9 * * 1-5
*/15 * * * *
0 0 1,15 * *
30 2 * * 0
0 */6 * * *
Ungültige Ausdrücke
0 9 * *4 Felder, 5 benötigt
0 25 * * *Stunden-Maximum ist 23
*/0 * * * *Schrittwert darf nicht 0 sein
0 9 * * 8Wochentag-Maximum ist 6
60 * * * *Minuten-Maximum ist 59
0 0 0 * *Monatstag-Minimum ist 1

Code-Beispiele

So validierst du Cron-Ausdrücke programmatisch in JavaScript, Python, Go und Bash. Jedes Beispiel zeigt, wie ungültige Syntax abgefangen und eine aussagekräftige Fehlermeldung extrahiert wird.

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"

Häufig gestellte Fragen

Was macht einen Cron-Ausdruck ungültig?
Ein Cron-Ausdruck ist ungültig, wenn er die Syntaxregeln des Fünffeld-Formats verletzt. Häufige Ursachen: falsche Feldanzahl (weniger als 5 oder mehr als 5 für Standard-Cron), ein Wert außerhalb des erlaubten Bereichs (z. B. Stunde 25, Minute 60, Monatstag 0), ein Schrittwert von null (*/0), umgekehrte Bereichsgrenzen (5-1) oder nicht erkannte Zeichen. Der Ausdruck muss genau fünf durch Leerzeichen getrennte Felder mit gültigen Werten und Operatoren in jedem Feld enthalten.
Ist ein Cron-Ausdruck gültig, wenn er nie ausgelöst wird?
Ja, syntaktisch. Ein Ausdruck wie 0 0 31 2 * (31. Februar) besteht die Syntaxvalidierung, weil jedes Feld Werte innerhalb des erlaubten Bereichs enthält. Er wird jedoch nie ausgelöst, weil der Februar nie 31 Tage hat. Die meisten Validatoren prüfen nur die Syntax, nicht die semantische Korrektheit. Wenn du unerreichbare Zeitpläne abfangen möchtest, berechne die nächsten N Ausführungszeiten und prüfe, ob die Liste leer ist.
Wie validiere ich einen Cron-Ausdruck mit 6 oder 7 Feldern?
Standard-POSIX-cron verwendet 5 Felder. Quartz Scheduler fügt ein Sekundenfeld am Anfang hinzu (6 Felder) und ein optionales Jahresfeld am Ende (7 Felder). AWS EventBridge verwendet 6 Felder. Dieser Validator prüft das standardmäßige 5-Feld-Format. Um Quartz- oder EventBridge-Ausdrücke zu validieren, verwende eine Bibliothek, die das erweiterte Format unterstützt, z. B. cron-parser mit der extended-Option in Node.js oder quartz-cron in Java.
Kann ich benannte Tage und Monate in Cron-Ausdrücken verwenden?
Die meisten Cron-Implementierungen akzeptieren dreistellige englische Abkürzungen für Monate (JAN-DEC) und Wochentage (SUN-SAT). Diese sind in crontab nicht case-sensitiv, in anderen Systemen möglicherweise schon. Benannte Werte können nicht auf allen Plattformen in Bereichen verwendet werden: MON-FRI funktioniert in crontab, aber nicht in jeder Bibliothek. Wenn Portabilität wichtig ist, verwende numerische Werte (1-5 für Montag bis Freitag).
Warum funktioniert mein Cron-Ausdruck in crontab, aber nicht in Kubernetes?
Kubernetes CronJobs verwenden dasselbe 5-Feld-Format wie crontab, werden aber von der Go-Cron-Bibliothek geparst, die eine strengere Validierung hat. Ausdrücke, die crontab toleriert (z. B. abschließende Leerzeichen oder gleichzeitig gesetzte Nicht-Wildcard-Werte in Monatstag und Wochentag), können sich unterschiedlich verhalten. Kubernetes verwendet außerdem standardmäßig die Zeitzone des Controller-Managers (meist UTC), nicht die lokale Zeitzone des Knotens. Validiere den Ausdruck immer gegen den spezifischen Scheduler, für den du deployest.
Wie sollte ich Cron-Ausdrücke in einer CI/CD-Pipeline validieren?
Füge einen Validierungsschritt hinzu, der vor dem Deployment läuft. In einem Node.js-Projekt verwende cron-parser oder cron-validator in einer Testdatei, die Cron-Strings aus deiner Konfiguration liest und prüft, dass sie ohne Fehler geparst werden. In Python verwende croniter.is_valid(). In einem Shell-Skript rufe die Validierungsfunktion auf und beende mit einem Nicht-Null-Exit-Code bei einem Fehler. So werden Tippfehler und Copy-Paste-Fehler abgefangen, bevor sie in die Produktion gelangen.
Was ist der Unterschied zwischen Cron-Validierung und Cron-Linting?
Validierung prüft, ob ein Ausdruck syntaktisch korrekt ist: richtige Feldanzahl, Werte im Bereich, gültige Operatoren. Linting geht weiter und prüft auf wahrscheinliche Fehler, die technisch gültig sind: Zeitpläne, die nie auslösen (31. Februar), überlappende Jobs, Schrittwerte, die erwartete Intervalle überspringen (*/7 setzt jede Stunde zurück), oder Zeitpläne ohne Zeitzonendokumentation. Validierung beantwortet: 'Wird das geparst?' Linting beantwortet: 'Ist das wahrscheinlich das, was du gemeint hast?'