我正试图把一个正则表达式放在一起,它匹配有效日期的任何部分,只要该部分从前面开始。有效日期定义为DD/MM/YYYY,其中1900 <= YYYY < 2100。我对闰年、每个月的天数等都不感兴趣。
其目的是在用户输入时向他们提供验证反馈,但仅当他们在错误的轨道上时。我相信这会改善用户体验。
例如:
'1' matches (as e.g. 12/12/1999 is a valid date)
'4' does not match
'04' matches
'12/12/' matches
这就是我得到的:
^(([0123]\d?)|([0123]\d\/[01]?)|([0123]\d\/[01]\d\/?)|([0123]\d\/[01]\d\/(1|2|19\d{0,2}|20\d{0,2})))$
有没有更简单的方法来使用正则表达式?
1条答案
按热度按时间6ioyuze21#
是的,有。基本的方法是,如果输入有A、B和C部分,那么写:
等等,对于任何数目的段。这使得从B开始的整个部分都是可选的,因此A本身将匹配。它使得C是可选的,所以AB将匹配。当然,ABC也会匹配。
这里的问题是处理世纪,这需要一点特殊的处理。总的来说,解决方案看起来像