【问题标题】:RFC 2822 and ISO 8601 date format regexRFC 2822 和 ISO 8601 日期格式正则表达式
【发布时间】:2014-10-11 07:57:24
【问题描述】:

在 JavaScript 中有 Date.parse() 方法,它解析表示 RFC 2822ISO 8601 日期 (see MDN) 的字符串。在网络上的大量不同来源中,能够(单独)匹配这些日期格式的最可靠和最全面的正则表达式是什么?

更新: 如果没有合理的方法让全面的正则表达式完全匹配这些格式,至少这些特定 RFC 和 ISO 格式的模式是什么,Date.parse() 方法接受并正确理解。

【问题讨论】:

  • 我认为使用正则表达式是不可能的。

标签: javascript regex datetime-format iso rfc


【解决方案1】:

我认为答案是说没有单一的正则表达式或者说是一个坏主意,因为它会非常棘手和困难)将匹配 RFC 2822 或 ISO 8601 中列出的所有格式。此外,对所有格式使用正则表达式也不是一种安全且好的方法。但是,如果您有任何specific format then yes we can go for a regex

您可以查看date.jsmoment.js

编辑:

同一个 MDN 说:

参数

dateString 表示 RFC822ISO 8601 日期的字符串。

说明

parse 方法采用日期字符串(例如“1995 年 12 月 25 日”)并返回自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数。本地时区用于解释不包含时区信息的参数。此函数可用于根据字符串值设置日期值,例如结合 setTime 方法和 Date 对象。

给定一个表示时间的字符串,parse 返回时间值。 它接受 RFC822 / IETF 日期语法(RFC 1123 第 5.2.14 节和其他地方),例如“格林威治标准时间 1995 年 12 月 25 日星期一 13:30:00”。它理解美国大陆时区的缩写,但对于一般用途,使用时区偏移量,例如“Mon, 25 Dec 1995 13:30:00 GMT+0430”(格林威治以东 4 小时 30 分钟)子午线)。如果不指定时区,则假定为本地时区。 GMT 和 UTC 被认为是等效的。

或者,日期/时间字符串可以是 ISO 8601 格式。从 JavaScript 1.8.5 / Firefox 4 开始,支持 ISO 8601 的子集。 例如,“2011-10-10”(仅日期)或“2011-10-10T14:48:00(日期和时间)可以传递和解析。ISO 日期中的时区尚未支持,因此例如“2011-10-10T14:48:00+0200”(带时区)还没有给出预期的结果。

来自here

此格式包括仅日期格式:

  • YYYY
  • YYYY-MM
  • YYYY-MM-DD

...

所有数字必须以 10 为底。如果 MM 或 DD 字段不存在,则使用“01”作为值。如果 mm 或 ss 字段不存在,则使用“00”作为值,并且不存在的 sss 文件的值为“000”。缺席时区偏移的值为“Z”。

同时检查this

【讨论】:

  • 使用正则表达式是可能的,只是太长了;和一个回溯的噩梦。
猜你喜欢
  • 2012-01-28
  • 2010-10-06
  • 1970-01-01
  • 2016-03-06
  • 1970-01-01
  • 2013-05-22
  • 2015-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多