04-Nov-2021 07:09
I want to restrict parameter value to accept date only, is below Regular Expression will work?
^([0-2][0-9]|(3)[0-1])(\/)(((0)[0-9])|((1)[0-2]))(\/)\d{4}$
Solved! Go to Solution.
05-Nov-2021
07:47
- last edited on
05-Jun-2023
23:02
by
JimmyPackets
I found this regex, fits in the 254 character limit and checks:
(^(((0[1-9]|1[0-9]|2[0-8])[\/](0[1-9]|1[012]))|((29|30|31)[\/](0[13578]|1[02]))|((29|30)[\/](0[4,6,9]|11)))[\/](19|[2-9][0-9])\d\d$)|(^29[\/]02[\/](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)
04-Nov-2021
23:27
- last edited on
05-Jun-2023
23:02
by
JimmyPackets
Yes, it will work, but will not catch non-existing dates like: 31/02/2000.
I found a regex build by someone brilliant on stackoverflow, which also check for leap years.
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?: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]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
There is a regex validator in ASM, where it seems that the above regex is working.
And shows it is not matching non-existing dates.
KR
Daniel
05-Nov-2021 04:50
dear Daniel,
the idea is, i want to accept date format only (dd/mm/yyyy) in this parameter and block others value like text and so on. so do i have to use the mentioned regex (your regex) ?
one more thing, i can not use the above regex because it exceed the limit . how can i re-write the regex to accept dd/mm/yyyy ?
05-Nov-2021
07:26
- last edited on
24-Mar-2022
01:26
by
li-migration
Hi ,
You are correct, my regex is exceeding the 254 character limit. I tested it only in the regex validator, but not in a Parameter. My bad. *facepalm*
Your regex should work, but it will not prevent users from adding dates like 31/02/2022.
KR
Daniel
05-Nov-2021
07:47
- last edited on
05-Jun-2023
23:02
by
JimmyPackets
I found this regex, fits in the 254 character limit and checks:
(^(((0[1-9]|1[0-9]|2[0-8])[\/](0[1-9]|1[012]))|((29|30|31)[\/](0[13578]|1[02]))|((29|30)[\/](0[4,6,9]|11)))[\/](19|[2-9][0-9])\d\d$)|(^29[\/]02[\/](19|[2-9][0-9])(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)$)
05-Nov-2021 09:26
I have test my regex with 29/3/2026 but i got Parameter value does not comply with regular expression , where it is works fine for 02/03/2022
05-Nov-2021 09:39
i have modified the regex to ^([0-2][0-9]|(3)[0-1])(\/)(([0-9]|(0)[0-9])|((1)[0-2]))(\/)\d{4}$ , now it can accept both 29/3/2026 and 02/03/2022 but again can't detect non-existing date ex 31/2/2021
05-Nov-2021 10:13
I cannot judge which regex meets your requirements best. The usual syntax is dd/mm/yyyy.
Is it more important for you, to have a syntax that would catch dd/mm/yyyy and dd/m/yyyy?
Or is it it more important to filter out non-existing dates like 31/02/2022 and stick to the defacto standard of dd/mm/yyyy?
My regex foo is not strong enough to combine both requirements into one single regex.