可能的重复:
使用 PHP 验证 Crontab 条目
我到处都有搜索,但我的正则表达式很差,所以我寻求帮助。
我正在构建一个基于 Web 的 CRON 工具,该表单只能且只会将以下内容传递给处理脚本。'0-99' ',' '*' '-' '/'
我想在 PHP 中使用简单的 preg_match 来验证输入,但似乎无法提供正确的正则表达式。有人可以帮忙吗?另外,我将验证 cron 中的每个项目,即不是 * * * * * 而是分钟值,然后是小时值等。这允许发送回更具体的错误。
传递值的示例是
*
0,10
*/5
1,3,5
1-5
Run Code Online (Sandbox Code Playgroud)
这是一个糟糕的尝试,只是为了匹配数字和 * /[0-9*]/ 任何帮助都会很棒。
问候
让我们来看看:
$pattern = '/^(?:[1-9]?\d|\*)(?:(?:[\/-][1-9]?\d)|(?:,[1-9]?\d)+)?$/';
Run Code Online (Sandbox Code Playgroud)
此模式将允许您匹配有效 CRON 句子的合理子集。它确实与您的每一个示例相匹配。不过,确切的模式取决于您定义的语法。
编辑
忘记提及仅靠正则表达式匹配并不能解决问题。它可以做的是检查输入的(简化的)语法是否正确。除此之外,您还需要验证输入的语义(例如 0-23 小时;1-30/1 天等)。