Forum Discussion
Parameter Value - Regular Expression
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}$
I found this regex, fits in the 254 character limit and checks:
- valid dates
- if leap year, then 29.2. is also valid
(^(((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)$)
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
- THE_BLUECirrostratus
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 ?
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
- THE_BLUECirrostratus
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
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.
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com