java后台对日期的正则校验

package com.winner.model;

import java.util.regex.Pattern;

/**
 * java中的日期验证正则表达式
 *
 * @author wangxl
 * @date 2017-08-28
 */
public class WWWW {
    public static void main(String[] args) {

        //2004-04-30 01:11:00fasle
        String s1 = "2003-02-20";
        String s2 = "2017-01-01 10:00:00";
        //System.out.println(s + " " + p.matcher(s).matches());
        //对不存在的闰月 或不存在的日期2004-04-31 0:59:59 都是false 2004-04-31也是true
        if ("D".equals("D")) {
            Pattern p = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
            System.out.println("2003-02-20的正则校验" + p.matcher(s1).matches());
            //return Msg.fail().add("maxCreateTime不合法");
        }
        if ("60".equals("60")) {
            Pattern p = Pattern.compile("(\\d{2}|\\d{4})(?:\\-)?([0]{1}\\d{1}|[1]{1}[0-2]{1})(?:\\-)?([0-2]{1}\\d{1}|[3]{1}[0-1]{1})(?:\\s)?([0-1]{1}\\d{1}|[2]{1}[0-3]{1})(?::)?([0-5]{1}\\d{1})(?::)?([0-5]{1}\\d{1})");
            System.out.println("2017-01-01 10:00:00正则校验" + p.matcher(s2).matches());
        }
        //运行结果如下
        //2003-02-20的正则校验true
        //2017-01-01 10:00:00正则校验true
    }
}

你可能感兴趣的:(基础知识)