正则表达式匹配有效日期条目的每个阶段的日期

时间:2015-10-19 12:02:09

标签: javascript regex validation

我试图整理一个匹配在任何部分有效日期的正则表达式,只要该部分从前面开始。有效日期定义为DD / MM / YYYY,其中1900< = YYYY< 2100.我没有闰年,每月的日数因月份而异,等等。

目的是在用户输入时向用户提供验证反馈,但仅限于他们在错误的轨道上。我相信这可以改善用户体验。

所以,例如:

^(([0123]\d?)|([0123]\d\/[01]?)|([0123]\d\/[01]\d\/?)|([0123]\d\/[01]\d\/(1|2|19\d{0,2}|20\d{0,2})))$

这是我得到的地方:

singleLine

使用正则表达式做任何更简单的方法吗?

refiddle

1 个答案:

答案 0 :(得分:1)

是的,有。基本方法是,如果输入包含部分A,B和C,则写入:

/^A(B(C)?)?$/

等等,适用于任意数量的细分市场。这使得整个部分以B开头是可选的,因此A本身将匹配。它使C成为可选,因此AB将匹配。当然ABC会匹配。

这里的捕获是处理世纪,需要一些特殊处理。总而言之,该解决方案看起来像

/^[0-3](\d(\/([01](\d(\/((1(9(\d(\d)?)?)|((2(0(\d(\d)?)?)?))?)?)?)?)?)?)?)?$/