zoukankan      html  css  js  c++  java
  • 正则校验crontab格式

    紧接着前一篇博客,定时任务篇,其中crontab语法没有做任何格式校验,这是不完善的,所以就有这一篇文章。
    文章内容都是转载翻译的, 较多篇幅删减,保留了最基本的使用校验正则,原文地址在最后参考链接。

    crontab表达式语法可以参考维基百科

    比较全面的正则

    (@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (d+(ns|us|µs|ms|s|m|h))+)|((((d+,)+d+|(d+(/|-)d+)|d+|*) ?){5,7})
    

    以JavaScript 正则为例子

    // 正确的语法 */5 4 * * 1-6
    /(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (d+(ns|us|µs|ms|s|m|h))+)|((((d+,)+d+|(d+(/|-)d+)|d+|*) ?){5,7})/.test('*/5 4 * * 1-6')  // true
    
    // 错误的语法 - 4 * * *
    
    /(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (d+(ns|us|µs|ms|s|m|h))+)|((((d+,)+d+|(d+(/|-)d+)|d+|*) ?){5,7})/.test('- 4 * * *')  // false
    

    更简洁的例子

    如果只需要验证纯数字的写法,不使用英文单词之类的可以使用以下正则

    如验证单个单位是否正确

    首先熟悉下单个单位语法

    两个或者多个数字,使用 , 分隔
    两个数字使用 / 或者 -
    1-2 整数
    单个符号 *
    

    匹配单个单位的正则语法 参考 https://regexr.com/4jp7i

    /(d+,)+d+|(d+(/|-)d+)|d+|*/
    

    完善整个匹配crontab 数字语法 参考 https://regexr.com/4jp7o

    /(((d+,)+d+|(d+(/|-)d+)|d+|*) ?){5,7}/
    

    总结

    一般使用crontab语句,基本只使用数字语法,所以大部分情况下只需要使用最后一种即可。

    /(((d+,)+d+|(d+(/|-)d+)|d+|*) ?){5,7}/
    

    参考链接

  • 相关阅读:
    ASCII,Unicode,UTF
    C#值类型和引用类型2
    C#中使用Foreach
    CSS基础(2)
    CSS基础
    HTML基础
    MySQL高级
    MySQL和Python交互案例练习(2)
    MySQL和Python交互案例练习(1)
    外键SQL语句的编写
  • 原文地址:https://www.cnblogs.com/CharmCode/p/14191862.html
Copyright © 2011-2022 走看看