【问题标题】:Regex to validate date format正则表达式验证日期格式
【发布时间】:2021-10-12 10:20:43
【问题描述】:

我正在想办法在 Altva Mapforce 中验证我的输入日期,格式为“YYYYMMDD”。

我知道可以使用 [0-9]{4} 来验证年份,但我无法找到将日期范围“限制”为“01-31”和月份为“01-12”的方法。请注意“01”有效,“1”无效。

有人可以提供一个正则表达式来验证这种输入吗?

通过搜索互联网,我得到了一个月的一个:([1-9]|[12]\d|3[01]),但这个在 1-31 范围内有效。我想要01-31等等。

【问题讨论】:

  • @Thefourthbird 感谢您的回复。您能否为 YYYYMMDD 提供一个组合的正则表达式?我尝试合并所有三个部分,但没有奏效。谢谢!
  • 效果很好。

标签: regex date validation parsing map-force


【解决方案1】:

对于从 1-12 的一个月,为单个数字 1-9 添加零:

(?:0[1-9]|1[012])

对于第 1-31 天,为单个数字 1-9 添加零:

(?:0[1-9]|[12]\d|3[01])

将它们与 4 位数字放在一起以匹配年份(注意 \d{4} 也可以匹配 0000 和 9999),用字边界括起来 \b 以防止与前导或尾随数字/单词字符部分匹配:

\b\d{4}(?:0[1-9]|1[012])(?:0[1-9]|[12]\d|3[01])\b

一种变体,将一年的范围限制为例如 1900 - 2099

\b(?:19|20)\d{2}(?:0[1-9]|1[012])(?:0[1-9]|[12]\d|3[01])\b

请注意,这不会验证日期本身,例如它也可以匹配20210231。要验证日期,请在工具或代码中使用指定的 api 来处理日期。

【讨论】:

  • 描述得非常好!而且,最后的注释使答案更加有用。
  • @ArvindKumarAvinash 谢谢,日期和时间总是提醒我this great video
猜你喜欢
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-23
相关资源
最近更新 更多