Cron Expression Validator

Valideer cron-expressies en bekijk een gedetailleerde veld-voor-veld analyse

Probeer een voorbeeld

Cron-expressie

minute hour day(month) month day(week)

Geldige cron-expressie

Veldanalyse

Minute*/15(0–59)

Breidt uit naar: 0, 15, 30, 45

Hour0-6(0–23)

Breidt uit naar: 0, 1, 2, 3, 4, 5, 6

Day of month1,15(1–31)

Breidt uit naar: 1, 15

Month*(1–12)

Breidt uit naar: all (1–12)

Day of week1-5(0–6)

Breidt uit naar: 1, 2, 3, 4, 5

Wat is cron-expressievalidatie?

Cron-expressievalidatie is het proces waarbij gecontroleerd wordt of een cron-string de juiste syntaxisregels volgt voordat deze een planner bereikt. Een cron-expressie gebruikt vijf door spaties gescheiden velden (minuut, uur, dag van de maand, maand, dag van de week) om een terugkerend schema te definiëren. Als een veld een waarde buiten het toegestane bereik bevat, een ongeldige operator, of een structuurfout zoals een verkeerd aantal velden, wordt de expressie door de planner afgewezen bij het uitrollen of stelt het schema stilzwijgend geen enkele triggertijd in.

Een cron-expressie online valideren vangt fouten eerder op dan uitrollen naar productie en wachten op een gemiste taak. Veelvoorkomende fouten zijn: 25 invoeren in het uurveld (geldig bereik: 0-23), een stapwaarde van nul gebruiken (*/0, wat ongedefinieerd is), bereikgrenzen omdraaien (5-1 in plaats van 1-5), of extra velden toevoegen die horen bij niet-standaard formaten zoals Quartz. Een syntaxischecker signaleert deze problemen direct en vertelt u precies welk veld fout is.

Cron-validatie verschilt van cron-parsing. Een parser neemt een geldige expressie en vertaalt deze naar een leesbaar schema. Een validator beantwoordt een eenvoudigere vraag: is deze expressie correct opgebouwd? Valideer altijd vóór het parsen — het heeft geen zin een ongeldige expressie aan een planner te voeren. In CI/CD-pipelines voorkomt geautomatiseerde cron-validatie dat kapotte schema's worden samengevoegd in configuratiebestanden.

Waarom deze cron-validator gebruiken?

Een cron-expressie heeft strikte syntaxisregels, en planners geven inconsistente foutmeldingen wanneer die regels worden overtreden. Sommige planners wijzen de expressie af met een cryptische fout; anderen accepteren hem stilzwijgend en activeren nooit. Deze validator geeft u een duidelijke, veld-voor-veld diagnose voordat u uitrolt.

Directe syntaxiscontrole
Plak of typ een cron-expressie en zie direct of deze de validatie doorstaat. Geen formulier indienen, geen vertraging. Het resultaat wordt bijgewerkt terwijl u typt.
🔒
Privacy-first verwerking
Validatie vindt volledig in uw browser plaats. Uw cron-expressies en schemaconfiguraties worden nooit naar een server verzonden of ergens opgeslagen.
🔍
Veld-voor-veld foutrapportage
Wanneer een expressie ongeldig is, identificeert de validator welk veld de fout heeft veroorzaakt en waarom. Geen gissen welk van de vijf velden het probleem heeft.
📋
Geen account vereist
Open de pagina en begin met controleren. Geen login, geen API-sleutel, geen installatie. Werkt op elk apparaat met een moderne browser, inclusief mobiel.

Toepassingen van de cron-validator

Frontend Developer
Valideer cron-expressies ingevoerd door gebruikers in plannings-UI's voordat ze worden opgeslagen in de database. Vang syntaxisfouten aan de clientzijde op in plaats van te wachten op een afwijzing van de backend.
Backend Engineer
Controleer cron-expressies in taakwachtrij-configuraties (Celery beat, Hangfire, Quartz) tijdens code review. Verifieer dat een herschreven planningsstring de syntaxisvalidatie nog steeds doorstaat.
DevOps / SRE
Valideer cron-schema's in Kubernetes CronJob-manifesten en CI/CD-pipelineconfiguraties vóór toepassing. Voorkom dat een typefout in een back-upschema onopgemerkt blijft totdat de back-up wordt gemist.
QA Engineer
Test of uw applicatie ongeldige cron-invoer correct afwijst. Genereer bekende foute expressies (waarden buiten het bereik, verkeerd aantal velden) en bevestig dat de foutafhandeling werkt.
Data Engineer
Valideer cron-triggers voor Airflow DAG's en dbt geplande uitvoeringen. Bevestig dat pijplijnschema's geparsed uit YAML- of JSON-configuratiebestanden syntactisch correct zijn vóór uitrollen.
Student / Lerende
Experimenteer met cron-syntaxis en ontvang direct feedback over wat geldig is en wat niet werkt. Leer de veldbereiken, operators en randgevallen door expressies te testen en de foutmeldingen te lezen.

Veelvoorkomende cron-syntaxisfouten

De onderstaande tabel toont de meest voorkomende cron-expressiefouten en de oorzaken. Dit zijn de fouten die steeds terugkeren in productieconfiguraties en CI/CD-pipelines.

FouttypeVoorbeeldWat ging er mis
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.

Geldige vs. ongeldige cron-expressies

Een beknopt overzicht van correct opgebouwde expressies naast veelgemaakte fouten. Gebruik dit om uw expressie snel te controleren voordat u hem in een plannerconfiguratie plakt.

Geldige expressies
* * * * *
0 9 * * 1-5
*/15 * * * *
0 0 1,15 * *
30 2 * * 0
0 */6 * * *
Ongeldige expressies
0 9 * *4 velden, 5 nodig
0 25 * * *uur max is 23
*/0 * * * *stapwaarde mag niet 0 zijn
0 9 * * 8dag van de week max is 6
60 * * * *minuut max is 59
0 0 0 * *dag van de maand min is 1

Codevoorbeelden

Hoe cron-expressies programmatisch te valideren in JavaScript, Python, Go en Bash. Elk voorbeeld laat zien hoe ongeldige syntaxis wordt opgevangen en een betekenisvolle foutmelding wordt gegenereerd.

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"

Veelgestelde vragen

Wat maakt een cron-expressie ongeldig?
Een cron-expressie is ongeldig wanneer deze de syntaxisregels van het vijf-veldenformaat overtreedt. Veelvoorkomende oorzaken: verkeerd aantal velden (minder of meer dan 5 voor standaard cron), een waarde buiten het toegestane bereik (bijv. uur 25, minuut 60, dag van de maand 0), een stapwaarde van nul (*/0), omgedraaide bereikgrenzen (5-1), of niet-herkende tekens. De expressie moet precies vijf door spaties gescheiden velden bevatten met geldige waarden en operators in elk veld.
Is een cron-expressie geldig als hij nooit activeert?
Ja, syntactisch gezien wel. Een expressie zoals 0 0 31 2 * (31 februari) slaagt voor syntaxisvalidatie omdat elk veld waarden binnen het toegestane bereik bevat. Maar hij activeert nooit omdat februari nooit 31 dagen heeft. De meeste validators controleren alleen syntaxis, niet semantische correctheid. Als u onbereikbare schema's wilt opsporen, bereken dan de volgende N uitvoertijden en controleer of de lijst leeg is.
Hoe valideer ik een cron-expressie met 6 of 7 velden?
Standaard POSIX cron gebruikt 5 velden. Quartz Scheduler voegt een secondenveld toe aan het begin (6 velden) en een optioneel jaarveld aan het einde (7 velden). AWS EventBridge gebruikt 6 velden. Deze validator controleert het standaard 5-veldenformaat. Gebruik voor het valideren van Quartz- of EventBridge-expressies een bibliotheek die het uitgebreide formaat ondersteunt, zoals cron-parser met de extended-optie in Node.js of quartz-cron in Java.
Kan ik benoemde dagen en maanden gebruiken in cron-expressies?
De meeste cron-implementaties accepteren drieletter Engelse afkortingen voor maanden (JAN-DEC) en weekdagen (SUN-SAT). Deze zijn hoofdletterongevoelig in crontab maar kunnen hoofdlettergevoelig zijn in andere systemen. Benoemde waarden kunnen niet in bereiken worden gebruikt op alle platforms: MON-FRI werkt in crontab maar niet in elke bibliotheek. Als overdraagbaarheid belangrijk is, gebruik dan numerieke waarden (1-5 voor maandag tot en met vrijdag).
Waarom werkt mijn cron-expressie in crontab maar niet in Kubernetes?
Kubernetes CronJobs gebruiken hetzelfde 5-veldenformaat als crontab maar worden geparsed door de Go cron-bibliotheek, die strengere validatie heeft. Expressies die crontab tolereert (zoals afsluitende spaties, of zowel dag-van-maand als dag-van-week ingesteld op niet-jokertekenwaardes) kunnen zich anders gedragen. Kubernetes gebruikt standaard ook de tijdzone van de controller-manager (doorgaans UTC), niet de lokale tijdzone van het knooppunt. Valideer de expressie altijd tegen de specifieke planner waarvoor u uitrolt.
Hoe moet ik cron-expressies valideren in een CI/CD-pipeline?
Voeg een validatiestap toe die vóór de uitrol wordt uitgevoerd. Gebruik in een Node.js-project cron-parser of cron-validator in een testbestand dat cron-strings uit uw configuratie leest en controleert of ze zonder fout parsen. Gebruik in Python croniter.is_valid(). Roep in een shellscript de validatiefunctie aan en verlaat het script met een niet-nulcode bij mislukking. Dit vangt typefouten en kopieer-plakfouten op voordat ze de productie bereiken.
Wat is het verschil tussen cron-validatie en cron-linting?
Validatie controleert of een expressie syntactisch correct is: juist aantal velden, waarden binnen bereik, geldige operators. Linting gaat verder door te controleren op waarschijnlijke fouten die technisch geldig zijn: schema's die nooit activeren (31 februari), overlappende taken, stapwaarden die verwachte intervallen overslaan (*/7 herstart elk uur), of schema's zonder tijdzonedocumentatie. Validatie beantwoordt de vraag 'wordt dit geparsed?' Linting beantwoordt de vraag 'is dit waarschijnlijk wat u bedoelde?'