用于验证日期格式的正则表达式
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 来处理工具或代码中的日期。
我正在寻找一种方法来验证我在 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 来处理工具或代码中的日期。