前言
Cron 表達式是用來描述定時任務執行時間的語法,常見於各種定時任務調度工具中。本文使用正則表達式來驗證 Cron 表達式。
做法
首先,在 regex101 網站上測試正則表達式,以確保正確性。以下是用來驗證 Cron 表達式的正則表達式:
1 | ^(\*|([0-5]?[0-9]|\*\/[1-9][0-9]*|([0-5]?[0-9])(-([0-5]?[0-9]))?)(,([0-5]?[0-9]|\*\/[1-9][0-9]*|([0-5]?[0-9])(-([0-5]?[0-9]))?))*)\s+(\*|([0-1]?[0-9]|2[0-3]|\*\/[1-9][0-9]*|([0-1]?[0-9]|2[0-3])(-([0-1]?[0-9]|2[0-3]))?)(,([0-1]?[0-9]|2[0-3]|\*\/[1-9][0-9]*|([0-1]?[0-9]|2[0-3])(-([0-1]?[0-9]|2[0-3]))?))*)\s+(\*|([1-9]|[12][0-9]|3[01]|\*\/[1-9][0-9]*|([1-9]|[12][0-9]|3[01])(-([1-9]|[12][0-9]|3[01]))?)(,([1-9]|[12][0-9]|3[01]|\*\/[1-9][0-9]*|([1-9]|[12][0-9]|3[01])(-([1-9]|[12][0-9]|3[01]))?))*)\s+(\*|([1-9]|1[0-2]|\*\/[1-9][0-9]*|([1-9]|1[0-2])(-([1-9]|1[0-2]))?)(,([1-9]|1[0-2]|\*\/[1-9][0-9]*|([1-9]|1[0-2])(-([1-9]|1[0-2]))?))*)\s+(\*|([0-6]|\*\/[1-9][0-9]*|([0-6])(-([0-6]))?)(,([0-6]|\*\/[1-9][0-9]*|([0-6])(-([0-6]))?))*)$ |
實作
建立 validate-cron-expression.js
檔,根據以上表達式實作一個驗證函數。
1 | function validateCronExpression(input) { |
建立簡單的測試案例。
1 | const testCases = [ |
執行測試。
1 | node validateCronExpression.js |
測試結果如下:
1 | Test Case 1: Passed |