普通的前pression帮助:24小时添加到前pression [英] Regular expression help: add 24-hour to expression
本文介绍了普通的前pression帮助:24小时添加到前pression的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个正规的前pression,我需要24小时的时间格式添加到:
<$p$p><$c$c>^(((((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} /
在日期部分更高级的尝试(验证正确,除了2月):
<$p$p><$c$c>/(?:(?:0[13578]|1[02])\\/(?:0[1-9]|[12]\\d|3[01])|(?:0[2469]|11)\\/(?:0[1-9]|[12]\\d|30))\\/\\d{4,}/进一步说,每年的假设是一个飞跃之一:
<$p$p><$c$c>/(?:(?: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)/
是闰年:
<$p$p><$c$c>/\\d*(?:(?:(?!\\d{2}00)(?=\\d{2}(?:[13579][26]|[02468][048])))|(?=(?:[13579][26]|[02468][048])00))\\d{4}(?!\\d)/只有有效日期日:
<$p$p><$c$c>/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,}/一个有效日期:
<$p$p><$c$c>/(?:(?: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,}/
现在一切都在一个地方!
日期和时间:
<$p$p><$c$c>/^(?:(?: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 $ /
可以这样简单?最绝的!
我会做吗?该死的!
我觉得信息是明确的! - 不这样做
I have a regular expression that I need to add 24-hour time format to:
^(((((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})))?$
How would I go about adding 24 hour time format.
解决方案
TLDR: Don't freaking do it with regex!
The time part:
/(?:[01]\d|2[0-3]):[0-5]\d/
A basic attempt at the date part:
/(?:0[1-9]|1[0-2])\/(?:0[1-9]|[12]\d|3[01])\/\d{4,}/
A more advanced attempt at the date part (validates correctly, except for February):
/(?:(?:0[13578]|1[02])\/(?:0[1-9]|[12]\d|3[01])|(?:0[2469]|11)\/(?:0[1-9]|[12]\d|30))\/\d{4,}/
Going further, assuming each year is a leap one:
/(?:(?: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,}/
Divisibility by 4:
/\d*(?:[13579][26]|[02468][048])(?!\d)/
Not divisible by 100 or divisible by 400:
/\d*(?:(?!\d{2}00)|(?=(?:[13579][26]|[02468][048])00))\d{4}(?!\d)/
Is leap year:
/\d*(?:(?:(?!\d{2}00)(?=\d{2}(?:[13579][26]|[02468][048])))|(?=(?:[13579][26]|[02468][048])00))\d{4}(?!\d)/
Only valid February dates:
/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,}/
A valid date:
/(?:(?: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,}/
Now everything in one place!
Date and time:
/^(?:(?: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$/
Can this be simplified? Most definitely!
Will I do it? Hell no!
I think the message is clear - don't do it!
这篇关于普通的前pression帮助:24小时添加到前pression的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文