Попытался создать (упрощенное) регулярное выражение для шаблонов cron для себя и придумал следующее:
^(((\d+(,\d+)*)|(\d+-\d+)|(\*(\/\d+)?))(\s+(\d+(,\d+)*)|(\d+-\d+)|(\*(\/\d+)?)){4})$
Это генерируется
var variant1 = "\\d+(,\\d+)*";
var variant2 = "\\d+-\\d+";
var variant3 = "\\*(\\/\\d+)?";
var variants = "(" + variant1 + ")|(" + variant2 + ")|(" + variant3 + ")";
var regex_cron = "^((" + variants + ")(\\s+" + variants + "){4})$";
Для многих шаблонов cron это работает просто отлично:
* 4 45 6 7
5 4 45 6 7
*/5 3,4 45,6,8 6 5
Но если я использую звездочку в «группе» 2 или выше, она не работает:
4 * * * *
Я знаю, что есть несколько регулярных выражений для распознавания шаблонов cron, доступных в Интернете, но я действительно хотел бы знать, где я ошибся при создании регулярного выражения.