正则表达式验证UTC日期时间格式

时间:2014-08-29 12:17:25

标签: regex date time format

我想验证日期时间格式,就像'2014-08-29T06:44:03Z'这样我正在寻找一个reg ex。

尝试了几种组合,但那些对我不起作用。

4 个答案:

答案 0 :(得分:10)

试试这个正则表达式

\b[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z\b

<强>有:

\b - 字边界,检查例如'92014-08-29T06:44:03Z'无效

[0-9]{n} - 匹配数字与n位数

如果字符串必须只包含日期时间而不包含其他字符,请使用:

^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$

答案 1 :(得分:7)

以下正则表达式接受ISO-8601 UTC日期时间字符串,确保:

格式:YYYY-MM-DDThh:mm:ssZ
例如:2016-07-08T12:30:00Z

其中:
YYYY = 0000至9999
MM = 01至12
DD = 01至31
hh = 00至23
mm = 00至59
ss = 00到59

\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2]\d|3[0-1])T(?:[0-1]\d|2[0-3]):[0-5]\d:[0-5]\dZ

您可以在此处测试:https://regex101.com/r/jE4cE4/1

答案 2 :(得分:1)

将@Will Jones的答案作为对OP要求的扩展。这应该匹配可选的本地时间说明符和毫秒,即

2020-04-20T09:32:28 + 00:00

2020-04-20T09:32:28.123Z

都匹配。

编写的更多正面和负面测试案例:https://regex101.com/r/ufFBTA/2

\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2]\d|3[0-1])T(?:[0-1]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+|)(?:Z|(?:\+|\-)(?:\d{2}):?(?:\d{2}))

答案 3 :(得分:0)

轮辋答案肯定会有效,这里有几个例子。

更简洁:

\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z

更精确一点:

\d{4}-[01]{1}\d{1}-[0-3]{1}\d{1}T[0-2]{1}\d{1}:[0-6]{1}\d{1}:[0-6]{1}\d{1}Z

当然,您可以使用前向和后向引用编写比此更高效的更高级表达式,以确保您对允许的组合等进行100%验证匹配...