Title |
Test
Find
Pattern Title
|
Expression |
^(?:(?:(?:0?[1-9]|1\d|2[0-8])\/(?:0?[1-9]|1[0-2]))\/(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:(?:(?:31\/0?[13578]|1[02])|(?:(?:29|30)\/(?:0?[1,3-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]))))$ |
Description |
This expression validates dates in the Brazilian d/m/y format from 1/1/1600 - 12/31/9999. The days are validated for the given month and year. Leap years are validated for all 4 digits years from 1600-9999. Days and months must be 1 or 2 digits and may have leading zeros. Years must be 4 digit years, between 1600 and 9999. Date separator must be a slash (/) |
Matches |
29/02/2004 | 15/3/1824 | 31/01/2001 |
Non-Matches |
29/02/2000 | 21/10/92 | 31/02/2001 |
Author |
Rating:
Not yet rated.
Felipe Braga
|
Source |
|
Your Rating |
|
Title: Correction by Mario introduces bug + 29/02
Name: Mauro Sans
Date: 8/1/2007 11:14:01 AM
Comment:
When you replaced 0?[13578]|1[02] with (0?[13578]|1?[02]), you introduced the possibility to enter 31/0/xxxx
After the "1" you shouldn't insert a ?.
And, the rules say that 29/02/1600, 2000, 2400, etc. should work. So I fixed it:
^(?:(?:(?:0?[1-9]|1\d|2[0-8])\/(?:0?[1-9]|1[0-2]))\/(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:(?:(?:31\/(?:0?[13578]|1[02]))|(?:(?:29|30)\/(?:0?[1,3-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]))|1600|2000|2400|2800))$
Title: problems with 31/10/yyyy and 31/12/yyyy
Name: Mario Dias
Date: 10/26/2006 4:34:47 PM
Comment:
I replaced
0?[13578]|1[02]
with
(0?[13578]|1?[02]).
It seems to work.
The complete expression should be :
^(?:(?:(?:0?[1-9]|1\d|2[0-8])\/(?:0?[1-9]|1[0-2]))\/(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:(?:(?:31\/(0?[13578]|1?[02]))|(?:(?:29|30)\/(?:0?[1,3-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]))))$
Title: Problem with 31/12
Name: Pathik Thaker
Date: 9/27/2006 3:21:11 AM
Comment:
It is not allowing 31st Dec with any year. Please check it.
Title: problem with 31/12/1999
Name: O. Crhonek
Date: 3/12/2004 9:56:56 AM
Comment:
does not match for correct date 31/12/1999