我试图整理一个匹配在任何部分有效日期的正则表达式,只要该部分从前面开始。有效日期定义为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
使用正则表达式做任何更简单的方法吗?
答案 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)?)?)?))?)?)?)?)?)?)?)?$/