用于验证日期格式的正则表达式

Regex to validate date format

我正在寻找一种方法来验证我在 Altva Mapforce 中的输入日期,格式为“YYYYMMDD”。

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

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

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

对于 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 来处理工具或代码中的日期。