【问题标题】:Regular expression data time 12hrs format正则表达式数据时间12小时格式
【发布时间】:2016-01-14 22:02:21
【问题描述】:

您好,我的正则表达式有问题。我需要数据和格式 YYYY-MM-DD HH:MM:SS 但只有 12 小时。怎么了?

^([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-]([0]?[1-9]|[1][0-2])[./-]([0-9]{4})_(\s((([1-9])|(1[02]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))$

【问题讨论】:

  • “但只有 12 小时”是什么意思?
  • 可能有语法错误^([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-]([0]?[1-9]|[1][0-2])[./-]([0-9]{4})_( <-- Unbalanced '(' \s( <-- Unbalanced '(' (([1-9])|(1[02]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))$
  • 我的意思是 12 小时制,例如晚上 11 点而不是 23 点

标签: regex


【解决方案1】:

应该是这样的

Year-Month    /^\d{4}-([0][1-9] | [1][0-2] )
Day of Month  -([0][1-9] | [1-2]\d | [3][0-1])
Hour          \s([0][1-9] | [1][0-2])
Minute        :([0-5]\d)
Second        : ([0-5]\d)$/

细分

^ - 正则表达式的开始

\d{4}- 匹配任意四位数字

() - 捕获所有包含的内容

| - a 或 b

[0][1-9] - 将匹配 0 后跟任何正数

[1][0-2] - 或 1 后跟 0,1 或 2

[0-2]\d - 对于月份,0 到 2 之间的任意数字后面可以跟任意数字

[3][0-1] - 如果月份的第一个数字是 3,则后面只能跟 0 或 1。

$ - 正则表达式结束

你可以在线测试一下。

【讨论】:

  • 我认为你的分钟只是从 0-12 而不是 0-60,秒也有类似的问题
  • 感谢您指出这一点。我对我们处理的所有数字感到困惑。我只是重新格式化了它,这样会更容易理解
  • 为了完整起见,小时应从 [0]\d 更改为 [0][1-9],00 不是 12 小时制的有效时间。
  • 不工作/错误:([0][1-9]
  • 不错,我没注意到
猜你喜欢
  • 1970-01-01
  • 2017-09-17
  • 2013-01-17
  • 2016-06-10
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
相关资源
最近更新 更多