gpt4 book ai didi

javascript - 日期验证正则表达式 - 使前导零可选

转载 作者:行者123 更新时间:2023-12-03 05:14:10 25 4
gpt4 key购买 nike

我目前使用 http://regexlib.com 中的以下正则表达式使用 YYYY-MM-DD 模式验证传入日期。但前导零是强制性的,我希望它是可选的。

((((1[26]|2[048])00)|[12]\d([2468][048]|[13579][26]|0[48]))-((((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30)))|(02-(0[1-9]|[12]\d))))|((([12]\d([02468][1235679]|[13579][01345789]))|((1[1345789]|2[1235679])00))-((((0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|((0[469]|11)-(0[1-9]|[12]\d|30)))|(02-(0[1-9]|1\d|2[0-8]))))

Regular expression visualization

Debuggex Demo

<强> Test case

2000-01-01
2000-1-1
2000-01-1
2000-1-01

都是有效的。但到目前为止,仅接受第一个测试用例。

你能帮忙吗?

最佳答案

使用函数而不是正则表达式可以更简单地实现这一点。下面的代码更容易理解和维护(尽管它不需要任何东西),并且比OP中的正则表达式代码少得多。

function isValidISODate(s) {
var b = s.split(/\D/);
var d = new Date(b[0],--b[1],b[2]);
return d && d.getMonth() == b[1];
}

// Some tests
['2016-1-1','2016-01-01','2016-2-29','2016-02-30'].forEach(
s=>console.log(s + ': ' + isValidISODate(s))
);

关于javascript - 日期验证正则表达式 - 使前导零可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41674103/

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