Regex 要匹配类型为ddmmyyyy的日期的正则表达式
我正在尝试匹配以下类型的日期:Regex 要匹配类型为ddmmyyyy的日期的正则表达式,regex,Regex,我正在尝试匹配以下类型的日期:ddmmyyyy ,例如:04070201 到目前为止,我有: (2)以下几点:::(以下以下以下几点::::(以下以下几点::::(以下以下几点::::(以下以下几点:29 124;30)(以下:(以下以下几点::::(以下以下几点:[1[1,3-3-9-1[1[1,3-3-3-9)1[0-0-2[0-2[0-2[0-2[0-0-0-2])\2])\2)2)2()()));(((以下以下以下::::::((以下以下:::::::::(以下以下以下:::::::::
ddmmyyyy
,例如:04070201
到目前为止,我有:
(2)以下几点:::(以下以下以下几点::::(以下以下几点::::(以下以下几点::::(以下以下几点:29 124;30)(以下:(以下以下几点::::(以下以下几点:[1[1,3-3-9-1[1[1,3-3-3-9)1[0-0-2[0-2[0-2[0-2[0-0-0-2])\2])\2)2)2()()));(((以下以下以下::::::((以下以下:::::::::(以下以下以下::::::::::::::(:(:(:(:(:(:(:(:(::::::::::::::::::::::::::::[1[1[1[1[1[1[1[1[1[1[1[1[1[| ^(:0?[1-9]| 1\d | 2[0-8])(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2}$
这几乎与相同,但没有分隔符(
(\/\124;-\ 124;\)
)您可以使用以下更简单的方法:
^(0[1-9]|[1-2][0-9]|31(?!(?:0[2469]|11))|30(?!02))(0[1-9]|1[0-2])([12]\d{3})$
它捕获日、月、年,并验证除2月29日是否为闰年之外的所有内容。(要做到这一点,我只需对捕获的年份/日期执行数学运算,而不是尝试将其写入表达式)
工作示例:
解释:
- Capture the day: 01-29
- OR 31, if not succeeded by 02, 04, 06, 09, or 11
- OR 30, if not succeeded by 02
- Capture the month: 01-12
- Capture the year: 1000-2999 (you could narrow this down
by using number ranges like
(1[8-9]\d{2}|20\d{2}) == 1800-2099
正则表达式不是执行此任务的最佳工具 如果可能的话,只要匹配
^\d{8}$
(或者^\d\d\d\d\d\d$
,如果您的regexp引擎不支持{8}
语法),然后通过编程检查日期是否有效
更详细地说:
^(\d\d)(\d\d)(\d\d\d\d)$
(根据需要调整语法)(同样,如果您对格式有任何控制,请考虑使用YYYYMMD而不是DDMYYYY;它排序正确,它是ISO 8601标准指定的格式之一)
< P>不使用ReGEX验证日期。您的语言可能有一个内置的日期对象,它有自己的方法,您可以将其与您的输入结合使用,您已经用正则表达式验证了输入的格式。那么,为什么不从其他问题的答案中删除(\/\124;-\)
?什么不起作用?我无法匹配上面的示例(在regexpal中尝试过,虽然链接中的答案对dd/mm/yyyy很有效,但当我删除(\/|-|\)时,它仍然不匹配