cron表达式JS正则匹配
 2020-03-25 15:40:31   315   4   

本文最后更新于天前,文中介绍内容及环境可能已不适用.请谨慎参考.

今天做cron表达式的验证做了半天。。总算弄好了,

每次搞正则都是一个头两个大,不过弄好成就感还是满满哒。[]~( ̄▽ ̄)~*

 

目前网上能找到的正则都不行,还是自己实现吧。

效果在喵的实验室这里,

 

根据CronTab.org官方的说明实现JS验证。

5位

* * * * *

分别位分钟,小时,天,月,周

支持范围、列表、步长、月周的英文名称

比如:

1,2,44,50,52-59 */1 1-5/1 1 1    

又比如:

* 10 1-10 jun mon

 

做起来没想到第一步分钟验证就栽跟头了,0-59的验证。。坑了个爹的。

【0-59】?呵呵,NO!

/[1-5]?[0-9]/

0-23?

2[0-3]|1?[0-9]

 

正确验证第一位,0-59分钟的完整正则如下:

支持0-59单个数字,支持0,1,2,4-10 逗号分隔列表及-范围

支持 */3  10-40/2 步长每多少分钟 间隔

/^((\*|[1-5]?[0-9]|[1-5]?[0-9]-[1-5]?[0-9])(\/[1-5]?[0-9])*|(([1-5]?[0-9]|[1-5]?[0-9]-[1-5]?[0-9])+(,([1-5]?[0-9]|[1-5]?[0-9]-[1-5]?[0-9]))*))\s[^\s]*\s[^\s]*\s[^\s]*\s[^\s]*$/

 

然后月份和星期还需要支持英文前三个字母的表达

即: Jun     jun-Oct 也是需要支持的。

/^[^\s]*\s[^\s]*\s[^\s]*\s((\*|(1[0-2]|[0-9])|(1[0-2]|[0-9])-(1[0-2]|[0-9]))(\/(1[0-2]|[0-9]))*|(((1[0-2]|[0-9])|(1[0-2]|[0-9])-(1[0-2]|[0-9]))+(,((1[0-2]|[0-9])|(1[0-2]|[0-9])-(1[0-2]|[0-9])))*)|(((jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))))\s[^\s]*$/i

 

好了,完整的效果在这里哦~


 2020-04-02 11:02:36 
 0

  本文基于CC BY-NC-ND 4.0 许可协议发布,作者:野生的喵喵 固定链接: 【cron表达式JS正则匹配】 转载请注明



发表新的评论
{{s_uid}}   , 欢迎回来.
您的称呼(*必填):
您的邮箱地址(*必填,您的邮箱地址不会公开,仅作为有回复后的消息通知手段):
您的站点地址(选填):
留言:

∑( ° △ °|||)︴

(๑•̀ㅂ•́)و✧
<( ̄) ̄)>
[]~( ̄▽ ̄)~*
( ̄ˇ ̄)
[]~( ̄▽ ̄)~*
( ̄ˇ ̄)
╮( ̄▽ ̄)╭
( ̄ε(# ̄)
(⊙ˍ⊙)
( ̄▽ ̄)~*
∑( ° △ °|||)︴

文章分类

可能喜欢 

KxのBook@Copyright 2017- All Rights Reserved
Designed and themed by 野生的喵喵   1344338   38289