java正则表达式yyyymmdd_正则表达式校验yyyymmdd

正则表达式为

([\\d]{4}(((0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|11)((0[1-9])|([12][1-9])|30))|(02((0[1-9])|(1[0-9])|(2[1-8])))))|((((([02468][048])|([13579][26]))00)|([0-9]{2}(([02468][048])|([13579][26]))))(((0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|11)((0[1-9])|([12][1-9])|30))|(02((0[1-9])|(1[0-9])|(2[1-9])))))

处理代码如下:

private static final Pattern date_pattern = Pattern.compile("([\\d]{4}(((0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|11)((0[1-9])|([12][1-9])|30))|(02((0[1-9])|(1[0-9])|(2[1-8])))))|((((([02468][048])|([13579][26]))00)|([0-9]{2}(([02468][048])|([13579][26]))))(((0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|11)((0[1-9])|([12][1-9])|30))|(02((0[1-9])|(1[0-9])|(2[1-9])))))");

//假如是1988年5月8日这种,补足8位数字,变成1988年05月08日

String cur_mm = null;

String cur_dd = null;

if(cur_value.contains("年")){

cur_mm = cur_value.substring(cur_value.indexOf("年")+1,cur_value.indexOf("月"));

if(cur_mm!=null&&cur_mm.trim().length()==1){

cur_value = cur_value.substring(0,cur_value.indexOf("年")+1)+"0"+cur_value.substring(cur_value.indexOf("年")+1,cur_value.length());

}

cur_dd = cur_value.substring(cur_value.indexOf("月")+1,cur_value.indexOf("日"));

if(cur_dd!=null&&cur_dd.trim().length()==1){

cur_value = cur_value.substring(0,cur_value.indexOf("月")+1)+"0"+cur_value.substring(cur_value.indexOf("月")+1,cur_value.length());

}

}

Matcher date_match = date_pattern.matcher(cur_value.replace("年", "").replace("月", "").replace("日", "").replace("-", ""));

if (date_match.find()) {

date_result = date_match.group(0).trim();

return date_result.replace(",", "").trim();

}

date_pattern针对XXXX0410,XXXX0610,XXXX0910,XXXX1110这4个日期无效,需做特殊处理

boolean mmFlag = cur_value.indexOf("04")!=-1||cur_value.indexOf("06")!=-1||cur_value.indexOf("09")!=-1||cur_value.indexOf("11")!=-1;

if(mmFlag && cur_value.indexOf("10")!=-1){

return cur_value.replace("年", "").replace("月", "").replace("日", "").replace("-", "");

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值