Go (RE2)

Cron Expression in GO

Validate standard 5-field Unix cron expressions: minute, hour, day-of-month, month, day-of-week.

Try it in the GO tester →

Pattern

regexGO
^(\*|([0-5]?\d))\s+(\*|([01]?\d|2[0-3]))\s+(\*|([1-9]|[12]\d|3[01]))\s+(\*|([1-9]|1[0-2]))\s+(\*|[0-7])$

Go (RE2) code

goGo
package main

import (
	"fmt"
	"regexp"
)

func main() {
	re := regexp.MustCompile(`^(\*|([0-5]?\d))\s+(\*|([01]?\d|2[0-3]))\s+(\*|([1-9]|[12]\d|3[01]))\s+(\*|([1-9]|1[0-2]))\s+(\*|[0-7])$`)
	input := `0 9 * * 1`
	for _, match := range re.FindAllString(input, -1) {
		fmt.Println(match)
	}
}

Uses `regexp.MustCompile` (panics on bad patterns at startup) and `FindAllString` for all matches.

How the pattern works

Each of the five fields is validated against its allowed range. Minute: 0–59. Hour: 0–23. Day-of-month: 1–31. Month: 1–12. Day-of-week: 0–7 (0 and 7 both mean Sunday). Each field also accepts * for any value.

Examples

Input

0 9 * * 1

Matches

  • 0 9 * * 1

Input

*/15 * * * *

No match

Input

60 25 * * *

No match

Same pattern, other engines

← Back to Cron Expression overview (all engines)