Regex 日期和时间的正则表达式

Regex 日期和时间的正则表达式,regex,Regex,有人能帮我编写这个逻辑的正则表达式吗 MM/DD/YYYY hh:mm AM/PM MM/DD/YYYY hh AM/PM MM/DD/YYYY MM/YYYY YYYY [日期模板] M/D/YY M/YY M/YYYY M/D/YYYY MMM YY MMM YYYY MMMM YY MMMM YYYY YY/M YY-M YY.M YYYY/M YYYY-M YYYY.M YYYY YYYY/M/D YYYY-M-D YYYY.M.

有人能帮我编写这个逻辑的正则表达式吗

MM/DD/YYYY hh:mm AM/PM 
MM/DD/YYYY hh AM/PM 
MM/DD/YYYY 
MM/YYYY 
YYYY 

[日期模板]

M/D/YY 
M/YY 
M/YYYY 
M/D/YYYY 

MMM YY 
MMM YYYY 
MMMM YY 
MMMM YYYY 

YY/M 
YY-M 
YY.M 

YYYY/M 
YYYY-M 
YYYY.M 

YYYY 

YYYY/M/D 
YYYY-M-D 
YYYY.M.D 

M-D-YY 
M-YY 
M-YYYY 
M-D-YYYY 

M.D.YY 
M.YY 
M.YYYY 
M.D.YYYY 

MMM D[,] YY 
MMM D[,] YYYY 

MMMM D[,] YY 
MMMM D[,] YYYY 

D MMM[,] YY 
D MMM[,] YYYY 

D MMMM[,] YY 
D MMMM[,] YYYY 
hh:mm AM (or PM or A or P) 
hh AM (or PM or A or P) 
HH:mm 

YY two-digit year (00 => 2000, 10 => 2010) 
[时间模板]

M/D/YY 
M/YY 
M/YYYY 
M/D/YYYY 

MMM YY 
MMM YYYY 
MMMM YY 
MMMM YYYY 

YY/M 
YY-M 
YY.M 

YYYY/M 
YYYY-M 
YYYY.M 

YYYY 

YYYY/M/D 
YYYY-M-D 
YYYY.M.D 

M-D-YY 
M-YY 
M-YYYY 
M-D-YYYY 

M.D.YY 
M.YY 
M.YYYY 
M.D.YYYY 

MMM D[,] YY 
MMM D[,] YYYY 

MMMM D[,] YY 
MMMM D[,] YYYY 

D MMM[,] YY 
D MMM[,] YYYY 

D MMMM[,] YY 
D MMMM[,] YYYY 
hh:mm AM (or PM or A or P) 
hh AM (or PM or A or P) 
HH:mm 

YY two-digit year (00 => 2000, 10 => 2010) 
给你一些提示: 您有不同的方式指定月份:M,MM,MMMM

M意味着它是一个数字,所以你可以像
[0-9]
那样编写它(还有更简洁的方法,但我认为这需要最少的解释)

MM表示您可以有另一个数字,但这个数字显然只能是
1
,因为
12
是最高的

所以我们修改了表达式:
1?[0-9]
。这意味着一个是可选的

这是正确的吗?否,因为它将例如接受
0
作为有效月份。所以再改变一下

(1[0-2]|[1-9])
这意味着:要么是一个
1
后跟另一个介于0和2之间的数字,因此接受10、11、12。大括号用于创建一个组

现在接受
MMMM

(1[0-2]|[1-9]|一月|二月)

这可以进一步组合,例如对于
MM/YYYY
YYYY

((1[0-2]|[1-9]|一月|二月)/)?

另外,不要忘记匹配起点和起点:

^((1[0-2]|[1-9]|一月|二月)/)?$

否则,您将匹配类似于abc MM/DD/YYYY bla的内容

如果一切正常,您应该使用不需要引用组内容的非捕获组。所以
^((1[0-2]|[1-9]|一月|二月)/)?$
变成
^((1[0-2]|[1-9]|一月|二月)/)?$
,因为您可能不需要使用
//code>引用组。(但我认为这取决于实施情况)。要引用groupse,您可能需要给它们命名。请看这里:

这就是我编写正则表达式的方法


如果不放弃,它将是一个更长的表达式,但不是一个非常复杂的。。

checkDate>checkDate-checkDate-Check日期-checkDate,它将是一个更长的表达式,但不会是一个更长的表达式,但不会是一个很长的表达式,但不会是一个非常复杂的。。

p>p>p>p{{{{{1,1,2.1.1,2},不放弃,不会,不放弃,它会,它将是,它将会是一,它将是一个较长的一个较长的表达式,它将会是一个较长的表达式,它将会是一个较长的表达式,它将是一个较长的表达式,但会是一个较长的表达式,但会是一个较长的表达式,但会是一个较长的表达式,但,但不会是一个较长的表达式,但不会,但不会[01]?)([12401])([2-9])([1])([01])([8901])([8901])([1]))(0?[2469]|11) (1-1-9[1-1-9[1-1-9[1-9[1-9[1-9[1-1-9])([12[0-9[0[0[0[0[0]除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了([1-1-1-9[1-1-9[1[1-9[1-9]除除除除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了[0-0-0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0]5]]]5]5]5]5]]]5]之外之外之外)之外之外之外之外,(3[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0[0]除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了[13578]
?(以及其他一些
[]