目前,下面的regex是很好的日期,但我希望它接受那些日期和月份,其中也有个位数。我怎么能这么做?
Regex还应接受以下格式:
'11/4/2021‘或'1/4/2021’或'1/04/2021‘
dateString = '11/04/2021'
let dateformat = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(([1][26]|[2468][048]|[3579][26])00))))$/g;
if(dateString.match(dateformat)){
let operator = dateString.split('/');
console.log(operator)
}发布于 2021-03-12 08:56:39
您可以通过向第8组添加1至9个字符的OR语句来实现请求。那些日子都是这样的。这几个月也是如此。
让我给你举个例子。现在,您的匹配组如下:
(0[1-9]|[12]\d|30)这意味着您接受以0开头的所有数字,以及从1开始到9的数字,以1或2开头的数字,以及之后的任何数字,或30。
为了接受从1到9的数字,必须向匹配组添加另一个条件,即1至9位数字。因此,您的小组将如下所示:
(0[1-9]|[12]\d|30|[1-9])这是你能做的最基本的事情。有很多方法可以优化这个正则表达式,并以更好的方式完成它。你可以想想这个月的第31天,因为现在它还没有捕捉到它。
正如我在“天”匹配组的示例中所展示的那样,您可以对月份的匹配组执行此操作。
发布于 2021-03-12 09:00:53
不要用Date.parse()代替。
发布于 2021-03-14 15:15:43
月份:^0{1}[1-9]$|^[1-9]{1}$|^1[012]{1}$
第一部分是0,第二部分没有0,最后一部分是10,11和12。
数日:^0{1}[1-9]{1}$|^[1-9]{1}$|^[12]{1}[0-9]{1}$|^3[01]{1}$
第一次是从1-9开始,从0开始,第二天是相同的,但没有0。
如果最大的一天是31,30或28,我会使用javascript。
https://stackoverflow.com/questions/66596717
复制相似问题