首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何做regex日期格式的更改?

如何做regex日期格式的更改?
EN

Stack Overflow用户
提问于 2021-03-12 08:44:15
回答 3查看 190关注 0票数 0

目前,下面的regex是很好的日期,但我希望它接受那些日期和月份,其中也有个位数。我怎么能这么做?

Regex还应接受以下格式:

'11/4/2021‘或'1/4/2021’或'1/04/2021‘

代码语言:javascript
复制
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)
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-12 08:56:39

您可以通过向第8组添加1至9个字符的OR语句来实现请求。那些日子都是这样的。这几个月也是如此。

让我给你举个例子。现在,您的匹配组如下:

代码语言:javascript
复制
(0[1-9]|[12]\d|30)

这意味着您接受以0开头的所有数字,以及从1开始到9的数字,以1或2开头的数字,以及之后的任何数字,或30。

为了接受从1到9的数字,必须向匹配组添加另一个条件,即1至9位数字。因此,您的小组将如下所示:

代码语言:javascript
复制
(0[1-9]|[12]\d|30|[1-9])

这是你能做的最基本的事情。有很多方法可以优化这个正则表达式,并以更好的方式完成它。你可以想想这个月的第31天,因为现在它还没有捕捉到它。

正如我在“天”匹配组的示例中所展示的那样,您可以对月份的匹配组执行此操作。

票数 0
EN

Stack Overflow用户

发布于 2021-03-12 09:00:53

不要用Date.parse()代替。

票数 1
EN

Stack Overflow用户

发布于 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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66596717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档