匹配日期的正则表达式

我的匹配方法分4个部分匹配

1. 匹配含31号的日期

2. 匹配含30号的日期

3. 匹配非闰年2月

4. 匹配闰年2月

 

 

以下表达式匹配yyyy-MM-dd/ yyyy-M-d

 

^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[469]|11)-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$
//var test31=/^((((1[6-9]|[2-9]\d)\d{2})(0?[13578]|1[02])(0?[1-9]|[12]\d|3[01]))$/;
//var test30=/^(((1[6-9]|[2-9]\d)\d{2})(0?[469]|11)(0?[1-9]|[12]\d|30))$/;
//var test28=/^(((1[6-9]|[2-9]\d)\d{2})0?2(0?[1-9]|1\d|2[0-8]))$/;
//var test29=/^(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))0?229)$/;

 

下面是我在oracle数据匹配的,匹配格式是yyyyMMdd

create table tmp_date_test(
dateChar varchar2(32)
)

insert into tmp_date_test values(20100201);
insert into tmp_date_test values(20100229);
insert into tmp_date_test values(20101001);
insert into tmp_date_test values(20101031);

insert into tmp_date_test values(20101101);
insert into tmp_date_test values(20101130);
insert into tmp_date_test values(20101131);
insert into tmp_date_test values(20101032);
insert into tmp_date_test values(20080229);
insert into tmp_date_test values(10000229);
insert into tmp_date_test values(2008229);
insert into tmp_date_test values(201021);

select *from tmp_date_test where regexp_like(dateChar,
'^((((1[6-9]|[2-9]\d)\d{2})(0[13578]|1[02])(0[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})(0[469]|11)(0[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})0{1}2(0[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))0229))$')

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值