Validateur d'expressions Cron

Validez des expressions cron et obtenez une analyse détaillée champ par champ

Essayer un exemple

Expression cron

minute hour day(month) month day(week)

Expression cron valide

Analyse des champs

Minute*/15(0–59)

Se développe en: 0, 15, 30, 45

Hour0-6(0–23)

Se développe en: 0, 1, 2, 3, 4, 5, 6

Day of month1,15(1–31)

Se développe en: 1, 15

Month*(1–12)

Se développe en: all (1–12)

Day of week1-5(0–6)

Se développe en: 1, 2, 3, 4, 5

Qu'est-ce que la validation d'expressions cron ?

La validation d'une expression cron consiste à vérifier qu'une chaîne cron respecte les règles de syntaxe correctes avant d'atteindre un planificateur. Une expression cron utilise cinq champs séparés par des espaces (minute, heure, jour-du-mois, mois, jour-de-la-semaine) pour définir une planification récurrente. Si un champ contient une valeur hors plage, un opérateur invalide ou une erreur de structure comme un nombre de champs incorrect, l'expression sera soit rejetée par le planificateur au déploiement, soit silencieusement ignorée sans jamais correspondre à une heure de déclenchement.

Valider une expression cron en ligne permet de détecter les erreurs bien avant de déployer en production et d'attendre qu'une tâche soit manquée. Les erreurs fréquentes : écrire 25 dans le champ heure (plage valide : 0-23), utiliser un pas de zéro (*/0, indéfini), inverser les bornes d'une plage (5-1 au lieu de 1-5), ou ajouter des champs supplémentaires propres à des formats non standard comme Quartz. Un vérificateur de syntaxe signale ces problèmes instantanément et indique précisément quel champ est incorrect.

La validation cron diffère de l'analyse cron. Un parseur prend une expression valide et la traduit en planification lisible. Un validateur répond à une question plus simple : cette expression est-elle bien formée ? Validez avant d'analyser — il est inutile d'alimenter un planificateur avec une expression invalide. Dans les pipelines CI/CD, la validation automatique des expressions cron empêche l'intégration de planifications incorrectes dans les fichiers de configuration.

Pourquoi utiliser ce validateur cron ?

Une expression cron obéit à des règles de syntaxe strictes, et les planificateurs fournissent des messages d'erreur peu clairs lorsque ces règles sont enfreintes. Certains rejettent l'expression avec une erreur cryptique ; d'autres l'acceptent silencieusement et ne se déclenchent jamais. Ce validateur vous donne un diagnostic clair, champ par champ, avant le déploiement.

Vérification instantanée de la syntaxe
Collez ou saisissez une expression cron et voyez immédiatement si elle passe la validation. Pas de soumission de formulaire, pas de délai. Le résultat se met à jour à chaque frappe.
🔒
Traitement respectueux de la vie privée
La validation s'exécute entièrement dans ton navigateur. Tes expressions cron et tes configurations de planification ne sont jamais envoyées à un serveur ni stockées quelque part.
🔍
Rapport d'erreur champ par champ
Lorsqu'une expression est invalide, le validateur identifie quel champ a causé l'erreur et pourquoi. Pas besoin de deviner lequel des cinq champs pose problème.
📋
Aucun compte requis
Ouvre la page et commence à vérifier. Pas de connexion, pas de clé API, pas d'installation. Fonctionne sur tout appareil avec un navigateur moderne, y compris mobile.

Cas d'utilisation du validateur cron

Développeur frontend
Validez les expressions cron saisies par les utilisateurs dans les interfaces de planification avant de les enregistrer en base de données. Détectez les erreurs de syntaxe côté client plutôt que d'attendre un rejet du backend.
Développeur backend
Vérifiez les expressions cron dans les configurations de files de tâches (Celery beat, Hangfire, Quartz) lors des revues de code. Assurez-vous qu'une chaîne de planification refactorisée passe toujours la validation syntaxique.
DevOps / SRE
Validez les planifications cron dans les manifestes CronJob Kubernetes et les configurations de pipelines CI/CD avant de les appliquer. Évitez qu'une faute de frappe dans une planification de sauvegarde passe inaperçue jusqu'à ce que la sauvegarde soit manquée.
Ingénieur QA
Testez que votre application rejette correctement les entrées cron invalides. Générez des expressions délibérément incorrectes (valeurs hors plage, nombre de champs incorrect) et confirmez que la gestion d'erreur fonctionne.
Ingénieur data
Validez les déclencheurs cron des DAGs Airflow et des exécutions planifiées dbt. Confirmez que les planifications de pipeline extraites de fichiers de configuration YAML ou JSON sont syntaxiquement correctes avant le déploiement.
Étudiant / Apprenant
Expérimentez avec la syntaxe cron et obtenez un retour instantané sur ce qui est valide et ce qui ne l'est pas. Apprenez les plages de champs, les opérateurs et les cas limites en testant des expressions et en lisant les messages d'erreur.

Erreurs courantes de syntaxe cron

Le tableau ci-dessous liste les erreurs d'expression cron les plus fréquentes et leurs causes. Ce sont les fautes qui reviennent régulièrement dans les configurations de production et les pipelines CI/CD.

Type d'erreurExempleCe qui ne va pas
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.

Expressions cron valides et invalides

Un référentiel rapide des expressions bien formées accompagnées des erreurs courantes. Utilisez-le pour vérifier votre expression avant de la coller dans une configuration de planificateur.

Expressions valides
* * * * *
0 9 * * 1-5
*/15 * * * *
0 0 1,15 * *
30 2 * * 0
0 */6 * * *
Expressions invalides
0 9 * *4 champs, il en faut 5
0 25 * * *l'heure max est 23
*/0 * * * *le pas ne peut pas être 0
0 9 * * 8le jour-de-la-semaine max est 6
60 * * * *la minute max est 59
0 0 0 * *le jour-du-mois min est 1

Exemples de code

Comment valider des expressions cron par programmation en JavaScript, Python, Go et Bash. Chaque exemple montre comment détecter une syntaxe invalide et extraire un message d'erreur significatif.

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"

Questions fréquentes

Qu'est-ce qui rend une expression cron invalide ?
Une expression cron est invalide lorsqu'elle enfreint les règles de syntaxe du format à cinq champs. Causes fréquentes : nombre de champs incorrect (moins de 5 ou plus de 5 pour le cron standard), une valeur hors plage autorisée (ex. heure 25, minute 60, jour-du-mois 0), un pas de zéro (*/0), des bornes de plage inversées (5-1), ou des caractères non reconnus. L'expression doit comporter exactement cinq champs séparés par des espaces, avec des valeurs et des opérateurs valides dans chacun.
Une expression cron est-elle valide si elle ne se déclenche jamais ?
Oui, syntaxiquement. Une expression comme 0 0 31 2 * (le 31 février) passe la validation syntaxique car chaque champ contient des valeurs dans les plages autorisées. Mais elle ne se déclenchera jamais car février n'a pas 31 jours. La plupart des validateurs vérifient uniquement la syntaxe, pas la cohérence sémantique. Si vous devez détecter des planifications inatteignables, calculez les N prochaines exécutions et vérifiez si la liste est vide.
Comment valider une expression cron à 6 ou 7 champs ?
Le cron POSIX standard utilise 5 champs. Quartz Scheduler ajoute un champ secondes au début (6 champs) et un champ année optionnel à la fin (7 champs). AWS EventBridge utilise 6 champs. Ce validateur vérifie le format standard à 5 champs. Pour valider des expressions Quartz ou EventBridge, utilisez une bibliothèque qui prend en charge le format étendu, comme cron-parser avec l'option extended en Node.js ou quartz-cron en Java.
Peut-on utiliser des noms de jours et de mois dans les expressions cron ?
La plupart des implémentations cron acceptent les abréviations en anglais à trois lettres pour les mois (JAN-DEC) et les jours de la semaine (SUN-SAT). Ces valeurs sont insensibles à la casse dans crontab mais peuvent être sensibles à la casse dans d'autres systèmes. Les valeurs nommées ne sont pas utilisables dans des plages sur toutes les plateformes : MON-FRI fonctionne dans crontab mais pas dans toutes les bibliothèques. Si la portabilité est importante, utilisez des valeurs numériques (1-5 pour du lundi au vendredi).
Pourquoi mon expression cron fonctionne dans crontab mais échoue dans Kubernetes ?
Les CronJobs Kubernetes utilisent le même format à 5 champs que crontab, mais sont analysés par la bibliothèque cron de Go, qui applique une validation plus stricte. Les expressions que crontab tolère (comme les espaces en fin de chaîne, ou les champs jour-du-mois et jour-de-la-semaine tous deux définis sur des valeurs non génériques) peuvent se comporter différemment. Kubernetes utilise également par défaut le fuseau horaire du controller-manager (généralement UTC), pas le fuseau local du nœud. Validez toujours l'expression par rapport au planificateur spécifique sur lequel vous déployez.
Comment valider des expressions cron dans un pipeline CI/CD ?
Ajoutez une étape de validation qui s'exécute avant le déploiement. Dans un projet Node.js, utilisez cron-parser ou cron-validator dans un fichier de test qui lit les chaînes cron depuis votre configuration et vérifie qu'elles s'analysent sans erreur. En Python, utilisez croniter.is_valid(). Dans un script shell, appelez la fonction de validation et quittez avec un code non nul en cas d'échec. Cela détecte les fautes de frappe et les erreurs de copier-coller avant qu'elles n'atteignent la production.
Quelle est la différence entre validation et linting d'expressions cron ?
La validation vérifie qu'une expression est syntaxiquement correcte : bon nombre de champs, valeurs dans les plages, opérateurs valides. Le linting va plus loin en détectant les erreurs probables qui sont techniquement valides : planifications qui ne se déclenchent jamais (31 février), tâches qui se chevauchent, valeurs de pas qui sautent des intervalles attendus (*/7 repart à zéro chaque heure), ou planifications sans documentation du fuseau horaire. La validation répond à « est-ce que ça va s'analyser ? » Le linting répond à « est-ce probablement ce que vous vouliez dire ? »