【问题标题】:Date Regular Expression Match 2 or 1 Digit Date or Month [duplicate]日期正则表达式匹配 2 位或 1 位数字日期或月份 [重复]
【发布时间】:2023-03-18 15:10:02
【问题描述】:

我有这个正则表达式可以完美匹配所有条件时间格式的 mm/dd/yyyy,但我需要稍微修改一下

如果有人插入 09/04/1980 它的工作完美,但是这个 5/9/1990(1 位数)会出错:(

有人可以帮我解决吗?

这是我目前的正则表达式:

(?:(?:0[1-9]|1[0-2])/(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))/(?:19|20)[0-9]{2}

【问题讨论】:

  • 为什么,为什么开发人员试图使用正则表达式解决世界上的每一个问题
  • 我只是在尝试学习正则表达式,但是当它变得这么长时,很难弄清楚

标签: regex


【解决方案1】:
(?:(?:0?[1-9]|1[0-2])\/(?:0?[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0?[1-9]|1[0-2])-(?:30))|(?:(?:0?[13578]|1[02])-31))\/(?:19|20)[0-9]{2}

试试这个。将0设为可选。

查看演示。

http://regex101.com/r/dZ1vT6/65

【讨论】:

  • 哇,我一直在这里和那里放置这些无济于事。怎么可能这么容易。无论如何,它是一个不错的网站
  • @machun 是的。学习正则表达式很有趣。
  • 感谢您的指导
【解决方案2】:

不要为此使用正则表达式。由于您没有指定语言,我将提供伪代码。您只需要在\ 上拆分并将数组元素转换为数字,然后执行简单的if 条件。

if(arr[0] < 0 && arr[0] > 32){
   // validated the month
}

【讨论】:

    猜你喜欢
    • 2019-09-27
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    相关资源
    最近更新 更多