Java正则表达式实用代码-验证日期格式

日期有很多格式,这里只以“年-月-日”这种格式作为示例

1、年就是0-9的数字重复4次,月份会有两种情况:0-9和10-12。
0-9范围就用0[1-9]来表示,10-12就用1[0-2]来表示
 

^[0-9]{4}-(0[1-9]|1[0-2])


2、天数也需要分为三个情况,0-9,10-29和30-31

 

^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$

以下范例判断是否为有效日期。
 

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public   class   Sample   {
   public static void main(String[] args) {
        System.out.println("2023-11-15 是否有效?"+check("2023-11-15"));
        System.out.println("2023-18-21 是否有效?"+check("2023-18-21"));
        System.out.println("2028-01-03 是否有效?"+check("2028-01-03"));
   }

    //判断是否为有效日期
    public static boolean check(String str) {
        String patt="^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$";

         
        Pattern r = Pattern.compile(patt);
        Matcher matcher = r.matcher(str);
        return matcher.find();
    }


}

运行以上范例,得到如下打印结果。

2023-11-15 是否有效?true
2023-18-21 是否有效?false
2028-01-03 是否有效?true

3、如果月份和日期只有单个数字,也认定为是有效的,那么要使用下面的正则表达式:

^[0-9]{4}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12][0-9]|3[01])$

范例如下。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public   class   Sample   {
   public static void main(String[] args) {
        System.out.println("2023-11-15 是否有效?"+check("2023-11-15"));
        System.out.println("2023-18-21 是否有效?"+check("2023-18-21"));
        System.out.println("2028-01-03 是否有效?"+check("2028-01-03"));
        System.out.println("2028-1-3 是否有效?"  +check("2028-1-3"));
        System.out.println("2028-1-03 是否有效?"  +check("2028-1-03"));
        System.out.println("2028-01-3 是否有效?"  +check("2028-01-3"));
        System.out.println("2028-13-03 是否有效?"  +check("2028-13-03"));

   }

    //判断是否为有效日期
    public static boolean check(String str) {
        String patt="^[0-9]{4}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12][0-9]|3[01])$";

              
        Pattern r = Pattern.compile(patt);
        Matcher matcher = r.matcher(str);
        return matcher.find();
    }


}

运行以上范例,得到如下打印结果。

2023-11-15 是否有效?true
2023-18-21 是否有效?false
2028-01-03 是否有效?true
2028-1-3 是否有效?true
2028-1-03 是否有效?true
2028-01-3 是否有效?true
2028-13-03 是否有效?false


原文:
Java正则表达式实用代码-验证日期格式 - 知乎

你可能感兴趣的:(正则表达式,Java编程,java,正则表达式)