js正则,精确匹配日期格式是否为YYYY-MM或YYYY-MM-DD

日常开发过程中,经常遇到通过正则表达式筛选数据的情况,这里主要记录一下精确匹配年月或年月日格式的正则表达式。

1、匹配YYYY-MM格式

const regex = /^\d{4}-(0[1-9]|1[0-2])$/
regex.test('2002-00')  // false
regex.test('2002-01')  // true
regex.test('2002-11')  // true
regex.test('2002-13')  // false
regex.test('2002-03-02')  // false
regex.test('2002-3')  // false

2、匹配YYYY-MM-DD格式

const regex = /^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/
regex.test('2002-00-01')  // false
regex.test('2002-01-00')  // false
regex.test('2002-01-01')  // true
regex.test('2002-12-11')  // true
regex.test('2002-13-02')  // false
regex.test('2002-03')  // false

3、匹配YYYY-MM-DD格式,且年不能以 “0” 开头

const regex = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/
regex.test('0102-00-01')  // false
regex.test('2002-01-10')  // true

解释一下:

`^` 和 `$` 表示匹配整个字符串,不能有杂质,其中`^` 表示匹配字符串开头,`$` 表示匹配字符串末尾。
`\d{4}` 表示匹配4个数字,即年份。
`-` 表示匹配一个短横线,`()` 表示分组,`|` 表示交替(OR)。
`(0[1-9]|1[0-2])` 表示匹配月份,其中 `0[1-9]` 表示匹配01到09之间的数字,`1[0-2]` 表示匹配10到12之间的数字。
`(0[1-9]|[12]\d|3[01])` 表示匹配日期,其中 `0[1-9]` 表示匹配01到09之间的数字,`[12]\d` 表示匹配10到29之间的数字,`3[01]` 表示匹配30或31。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值