有没有人知道英国日期格式的reg表达式

uma*_*ali 5 regex

嗨,任何人都知道英国日期格式的注册表例如dd/mm/yyyy.

dd或mm可以是1个字符,例如1/1/2010,但年份必须始终为4个字符.

提前致谢

Tim*_*ker 11

^\d{1,2}/\d{1,2}/\d{4}$
Run Code Online (Sandbox Code Playgroud)

将匹配1/1/2000,07/05/1999,但也是99/77/8765.

因此,如果您想进行一些基本的合理性检查,您需要

^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/\d{4}$
Run Code Online (Sandbox Code Playgroud)

这仍将与31/02/9999相匹配,所以如果你想抓住它们,它会变得更加毛茸茸:

^(?:(?:[12][0-9]|0?[1-9])/0?2|(?:30|[12][0-9]|0?[1-9])/(?:0?[469]|11)|(?:3[01]|[12][0-9]|0?[1-9])/(?:0?[13578]|1[02]))/\d{4}$
Run Code Online (Sandbox Code Playgroud)

但这仍然不会抓住闰年.所以,从regexlib.com修改一个正则表达式的野兽:

^(?:(?:(?:(?:31\/(?:0?[13578]|1[02]))|(?:(?:29|30)\/(?:0?[13-9]|1[0-2])))\/(?:1[6-9]|[2-9]\d)\d{2})|(?:29\/0?2\/(?:(?:(1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:0?[1-9]|1\d|2[0-8])\/(?:(?:0?[1-9])|(?:1[0-2]))\/(?:(?:1[6-9]|[2-9]\d)\d{2}))$
Run Code Online (Sandbox Code Playgroud)

会匹配

1/1/2001
31/5/2010
29/02/2000
29/2/2400
23/5/1671
01/1/9000
Run Code Online (Sandbox Code Playgroud)

并失败

31/2/2000
31/6/1800
12/12/90
29/2/2100
33/3/3333
Run Code Online (Sandbox Code Playgroud)

总而言之,正则表达式可以匹配日期; 验证它们不是他们的强项,但如果它们都是你可以使用的,那肯定是可能的.但看起来很可怕:)

  • 一旦你找到了可能的匹配,通常会更好地将它填入类型日期的变量(在任何平台上),并让平台担心闰年规则等. (2认同)