我需要正则表达式才能匹配1月至6月和2004年的日期。格式021204将匹配,而021205或071204等日期将不匹配。包含这些文件的目录还包含以7或8位数字命名的文件,这些文件不是有效日期,因此它只需要6位数字。这就是我试过的:
\d\[0-6]{2}\[4]{6}\
此正则表达式无法正常工作,我该如何解决?
答案 0 :(得分:1)
寻找这样的东西?
0[1-6](?:0[1-9]|[12][0-9]|3[01])04
有些说明:
字符类[]
只匹配一个字符。
[0-9]{3}
匹配000-999
,因为我指定它使用{3}
重复3次
它与0-999
不匹配,因为范围的左侧只有{1}
个字符。
如果我使用[0-9]{1,3}
,则会匹配0-9
,00-99
或000-999
中的任何内容。
因此,在这种情况下,您需要将([1-9]|[12][0-9]|3[01])
用于表示1-31
个月中的日期。
如果你将其分解,你可以看到:
01-9 = 0[1-9]
10-29 = [12][0-9]
30-31 = 3[01]
答案 1 :(得分:0)
试试这个:
^0[1-6](([0-2][0-9])|(3[0-1]))04$
希望它有所帮助。
答案 2 :(得分:0)
^0[1-6](?:0[1-9]|[12]\d|3[01])04$
答案 3 :(得分:0)
如果您需要确保日期有效(例如,不是2月30日或6月31日),则以下内容应强制执行每月的正确天数:
^0(?:(?:[135](?:0[1-9]|[12]\d|3[01]))|(?:[46](0[1-9]|[12]\d|30))|2(?:0[1-9]|[12]\d))04$