gpt4 book ai didi

javascript - 与有效日期输入的每个阶段匹配的日期的正则表达式

转载 作者:行者123 更新时间:2023-12-03 08:36:09 25 4
gpt4 key购买 nike

我正在尝试组合一个正则表达式,该正则表达式可以匹配有效日期的任何部分,只要该部分从前面开始。有效日期定义为 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})))$

使用正则表达式有更简单的方法吗?

最佳答案

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

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

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

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

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

关于javascript - 与有效日期输入的每个阶段匹配的日期的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33213891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com