我在 JENKINS 中的 MM/DD/YYYY 正则表达式有什么问题

What's wrong with my MM/DD/YYYY regex in JENKINS

我需要验证 MM/DD/YYYY 中的日期格式。在我的场景中,Null 也是有效的。 这是我的正则表达式 [0-9]{2}\/[0-9]{2}\/[0-9]{4}$ |

下图显示了我的正则表达式的作业配置

错误

我把原来的修改成这样:

^(?:(?:(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec))(\/|-|\.)31)|(?:(?:0?[1,3-9]|1[0-2]|(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))(\/|-|\.)(?:29|30)))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:(?:0?2|(?:Feb))(\/|-|\.)(?:29)(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9]|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep))|(?:1[0-2]|(?:Oct|Nov|Dec)))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])(?:(?:1[6-9]|[2-9]\d)?\d{2})$

Test the regex here

我会用

进行初始验证
^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$

我添加了 ^ 来指示字符串的开头,并且我从原始正则表达式的末尾删除了 |(它是联合运算符,OR)。我测试了 here.

您在 $ 符号后有 space,这就是您输入不匹配的原因。

[0-9]{2}\/[0-9]{2}\/[0-9]{4}$ |
//                    here __^

删除它 ([0-9]{2}\/[0-9]{2}\/[0-9]{4}$) 并且,如果你想接受空字符串,用一个组添加空字符串,并添加字符串锚点的开头:

^([0-9]{2}\/[0-9]{2}\/[0-9]{4}|)$

或者,更好的是,将组设为可选

^([0-9]{2}\/[0-9]{2}\/[0-9]{4})?$

Demo & explanation