有人能告诉我dateTimeString的正则表达式如下:“YYYY / MM / DD HH:MM:SS”[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有人能告诉我dateTimeString的正则表达式如下:“YYYY / MM / DD HH:MM:SS”[关闭]相关的知识,希望对你有一定的参考价值。
另外,我真的很感激解释。对不起,但我一生中从未使用过正则表达式,几乎无法阅读它们。
d{4}/d{2}/d{2}s+d{2}:d{2}:d{2}
d
是一个数字- qazxsw poi是数字位数(前面的正则表达式部分)
{4}
只是一个斜线/
只是一个冒号:
是任何空白s
是一个或多个空格(正面的正则表达式部分)
请注意,这可以用于快速初始检查,但您应该使用其他方法来检查完整日期格式,例如Rohit Jain或Jon Skeet所宣传的+
。
正如其他人所指出的,日期时间是不规则的表达。仅通过正则表达式验证是不可能的。仅闰秒排除了这一点。你能做的最好是限制误报。但是,你消除的误报越多,表达式就越复杂。
对于时间组件,您可以使用它
SimpleDateFormat
([2][0-3]|[0-1][0-9]|[1-9]):[0-5][0-9]:([0-5][0-9]|[6][0])
意味着匹配x[x]
意味着这匹配来自a-z的任何字母[a-z]
意味着这匹配a或ba|b
将比赛分组 所以
(..)
将匹配20-23或00-19或1-9
对于日期部分
([2][0-3]|[0-1][0-9]|[1-9])
你可以看到它变得非常大,我们仍然有很多误报。
把它放在一起
d{4}/([1][0-2]|[0][0-9])/([3][0-1]|[1-2][0-9]|[0][1-9]|[1-9])
这将允许d{4}/([1][0-2]|[0][0-9])/([3][0-1]|[1-2][0-9]|[0][1-9]|[1-9]) ([2][0-3]|[0-1][0-9]|[1-9]):[0-5][0-9]:([0-5][0-9]|[6][0])
在这么多级别上无效。
它也不允许0000 231 01:59:60
,可以通过用999 212 01:59:59
替换d{4}
来弥补。
d+
意味着1或更多。
我的正则表达式foo相当缺乏所以我总是去+
寻求帮助
附:虽然日期时间通常为60秒60分24小时365天,但月球/太阳历不稳定。一些日历忽略了这一点,UTC没有,西方日历中最容易辨认的人工制品是在2月底大致每4年增加一个闰日。下一个最常见的人工制品是在不规则时期增加闰秒。这可以是正面的也可以是负面的,因此一分钟的长度可以在59-61秒之间。
以上是关于有人能告诉我dateTimeString的正则表达式如下:“YYYY / MM / DD HH:MM:SS”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章