正则表达式帮助:添加24小时表达式

我有一个正则表达式,我需要将24小时时间格式添加到:

^(((((0[13578])|([13578])|(1[02]))[\-\/\s]?((0[1-9])|([1-9])|([1-2][0-9])|(3[01])))|((([469])|(11))[\-\/\s]?((0[1-9])|([1-9])|([1-2][0-9])|(30)))|((02|2)[\-\/\s]?((0[1-9])|([1-9])|([1-2][0-9]))))[\-\/\s]?\d{4})(\s(((0[1-9])|([1-9])|(1[0-2]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2})))?$ 

我将如何添加24小时时间格式。

TLDR:不要用正则表达式做怪!


时间部分:

 /(?:[01]\d|2[0-3]):[0-5]\d/ 

日期部分的基本尝试:

 /(?:0[1-9]|1[0-2])\/(?:0[1-9]|[12]\d|3[01])\/\d{4,}/ 

日期部分的更高级尝试(正确validation,2月除外):

 /(?:(?:0[13578]|1[02])\/(?:0[1-9]|[12]\d|3[01])|(?:0[2469]|11)\/(?:0[1-9]|[12]\d|30))\/\d{4,}/ 

更进一步,假设每年都是一个飞跃:

 /(?:(?:0[13578]|1[02])\/(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)\/(?:0[1-9]|[12]\d|30)|02\/(?:0[1-9]|[12]\d))\/\d{4,}/ 

可分性为4

 /\d*(?:[13579][26]|[02468][048])(?!\d)/ 

不能被100整除或被400整除:

 /\d*(?:(?!\d{2}00)|(?=(?:[13579][26]|[02468][048])00))\d{4}(?!\d)/ 

是闰年:

 /\d*(?:(?:(?!\d{2}00)(?=\d{2}(?:[13579][26]|[02468][048])))|(?=(?:[13579][26]|[02468][048])00))\d{4}(?!\d)/ 

仅限2月有效日期:

 /02\/(?:0[1-9]|1\d|2[0-8]|29(?=\/\d*(?:(?:(?!\d{2}00)(?=\d{2}(?:[13579][26]|[02468][048])))|(?=(?:[13579][26]|[02468][048])00))\d{4}(?!\d)))\/\d{4,}/ 

有效日期:

 /(?:(?:0[13578]|1[02])\/(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)\/(?:0[1-9]|[12]\d|30)|02\/(?:0[1-9]|1\d|2[0-8]|29(?=\/\d*(?:(?:(?!\d{2}00)(?=\d{2}(?:[13579][26]|[02468][048])))|(?=(?:[13579][26]|[02468][048])00))\d{4}(?!\d))))\/\d{4,}/ 

现在一切都在一个地方!

日期和时间:

 /^(?:(?:0[13578]|1[02])\/(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)\/(?:0[1-9]|[12]\d|30)|02\/(?:0[1-9]|1\d|2[0-8]|29(?=\/\d*(?:(?:(?!\d{2}00)(?=\d{2}(?:[13579][26]|[02468][048])))|(?=(?:[13579][26]|[02468][048])00))\d{4}(?!\d))))\/\d{4,} (?:[01]\d|2[0-3]):[0-5]\d$/ 

这可以简化吗? 明确地!

我会这样做吗? 一定不行!

我认为这个消息是明确的 – 不要这样做