【问题标题】:js datetime regexjs 日期时间正则表达式
【发布时间】:2020-05-30 19:41:09
【问题描述】:

我正在寻找日期时间的 js 正则表达式。 正则表达式应允许: 仅有效(可选,日期有效性将在稍后检查)格式为 dd/mm/yyyy 的日期,或表达式:today, tomarrow, now, in x days/hours/years/minutes,如果日期在其中一个中提供剂量包括“以 x 小时/分钟”或“现在”的方式,时间也将以 hh:mm 或 hh:mm PM/AM 或 hh 或 hh PM/AM 格式指定。如果有一个正则表达式符合某些规则但不是全部,它也可以。 例如:

 now
 in 5 days 12 AM
 25/6/2020 14:05
 tomorrow 13

【问题讨论】:

  • @Utkanos 我不打算为我编写任何代码。在大多数情况下,对于诸如日期或电子邮件之类的流行正则表达式,已经在某处为其制作了。我确实尝试了自己的正则表达式,但它仅适用于传统日期 dd/mm/yyyy hh:mm 格式。不知道如何将其扩展到特殊情况。
  • 在这种情况下,您要求的是场外资源,这与此处无关。
  • @RobG stackoverflow.com/questions/201323/… 怎么样?它要求场外资源,但它不提供任何代码。它有超过 3000 个赞
  • @avivgood2 — 谢谢,我已投票关闭它。它已被原始问题(包括代码)编辑得面目全非。但这在很多年前就被删掉了。您发布的内容是请求其他人为您编写代码,或者在不尝试自己编写代码的情况下将您指向其他资源。

标签: javascript regex date datetime time


【解决方案1】:

你的意思是这样的吗?

let r = /(\d{1,2}\/\d{1,2}\/\d{4})|today|tomorrow|now|(in\s+\d+\s+(days|hours|years|minutes)(\s+\d{1,2}(:\d{2})?\s*(AM|PM))?)|\d{2}(:\d{1,2})?\s*(PM|AM)?/
r.test("please bring it to me tomorrow in 5PM okay?") // true

【讨论】:

  • 伟大的灵魂!如果我不允许使用不属于日期的词语,例如“请把它带给我”或“in”(以你的例子为例)
  • 此解决方案的可读性为 0%。最好将其拆分为单独的 if。
  • 这不会验证日期,它只是检查它是否是有效的格式。例如。 r.test('99/99/9999') 返回真。
  • @RobG 但我说日期验证是可选的
猜你喜欢
  • 2019-02-26
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
相关资源
最近更新 更多