「java正则校验年份」java正则判断是否为日期

博主:adminadmin 2022-12-01 18:47:10 275

今天给各位分享java正则校验年份的知识,其中也会对java正则判断是否为日期进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

求java 正则表达式验证年月有效性。注意是“年月”有效性。

你非得要那么精确?

你非得要用正则?

得,给你写个

能验证格式是YYYY-MM-DD的

时间范围是 0001 - 9999年

能验证证闰年和闰月

不过这个一般人看不懂

(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)

JAVA 正则法则如有验证年份

目前仍没有人解决1、3、5、7、8、10、12月是31天的大月问题呀

(我本是1楼)如果用正则去验证“数值”,会很舍近求远,不是正则的强项。需要写很多的“向后断言”。效率会一般甚至很低。(目前我看到的上下楼的都是有漏洞的,没法检验闰月和大小月)

我所不取。

我一直用的这个:

static public boolean isValidDate(

int year, int mon, int day,

short year_min,short year_max,

StringBuffer msg)

{

if(yearyear_min || yearyear_max)

{

msg.append("年份必须在("+

year_min+"~"+year_max+

")之间,输入值("+year+")无效\n");

return false;

}else{//

switch(mon){

case 1:case 3:case 5:case 7:case 8:case 10:case 12:{

if(day1 || day31){

msg.append("日号必须在(1~31)之间,输入值("+day+")无效\n");

return false;

}

}break;

case 2:{

if(isLeapYear(year) day29){

msg.append("闰年的闰二月日号必须在(1~29)之间,"+year+"是闰年,输入值("+day+")无效\n");

return false; }else if(day28){

msg.append("非闰年的闰二月的日号必须在(1~28)之间,"+year+"不是闰年,输入值("+day+")无效\n");

return false;

}

}break;

case 4:case 6:case 9:case 11:{

if(day1 || day30){

msg.append("日号必须在(1~30)之间,输入值("+day+")无效\n");

return false;

}

}break;

default:{

msg.append("月份必须在(1~12)之间,输入值("+mon+")无效\n");

return false;

}

}

}

return true;

}

static public boolean isLeapYear(int year){

return (year%4==0 year%100!=0)|| year%400==0;

}

包好。

用JAVA正则表达式怎么匹配年月日(比如要求输入为出生日期)

建议使用 ^(\d{2}|\d{4})[-/](0?[1-9]|1[12])[-/](0?[1-9]|[12]\d|3[01])$ 来匹配(日期不一定有效),然后尝试转换成日期.如果要严谨点可以用^(\d{2}|\d{4})[-/](((0?[13578]|10|12)[-/](0?[1-9]|[12]\d|3[01]))|((0?[469]|11)[-/](0?[1-9]|[12]\d|30))|(0?2[-/](0?[1-9]|[12]\d)))$但是这里还是有个问题:将所有年份的2月29日都当作有效日期

java判断一个字符串是不是年份

1、首先在项目中需要引入hutool的jar包,如下图所示。

2、创建一个String类型的字符串用来存放星期几,如下图所示。

3、接着创建一个String类型的中文数字,如下图所示。

4、boolean blank = StrUtil.endWith(day,number);//判断最后一位是否是指定六,如下图所示。

5、运行程序查看得到的结果,如下图所示就完成了。

java实现输入年份判断在哪一天(正则表达式待

要看你用的年份在什么场合了,简单验证的话就是19/20开头的四位数字:

年份:

/^(19|20)\d{2}$/

月份:

/^([1-9]|1[0-2])$/

Java里面效验日期的正则表达式

 public static void main(String[] args)   

    {   

        String checkValue = "20000431112230";  

String year = checkValue.substring(0, 4); // 获取年份

String month = checkValue.substring(4, 6); // 获取月份

        Boolean isLeap = leapYear(Integer.parseInt(year)); // 判断闰年

        System.out.println(isLeap);

        StringBuffer eL= new StringBuffer();

        String longMonth = "01030507081012"; // 31天的月份

        String fix = "([2][0-3]|[0-1][0-9]|[1-9])[0-5][0-9]([0-5][0-9]|[6][0])";

        

        

        if(isLeap  month.equals("02")){  // 针对2月份的情况 【闰年】

         eL.append("\\d{4}([1][0-2]|[0][0-9])([2][0-1]|[1-2][0-9]|[0][1-9]|[1-9])"+fix);

        }else if(!isLeap  month.equals("02")){ // 针对2月份的情况 【非闰年】

         eL.append("\\d{4}([1][0-2]|[0][0-9])([2][0-1]|[1-2][0-8]|[0][1-9]|[1-9])"+fix);

        }else if(longMonth.contains(month)){ // 31天月份

         eL.append("\\d{4}([1][0-2]|[0][0-9])([3][0-1]|[1-2][0-9]|[0][1-9]|[1-9])"+fix);

        }else{ // 30天月份

         eL.append("\\d{4}([1][0-2]|[0][0-9])([3][0]|[1-2][0-9]|[0][1-9]|[1-9])"+fix);

        }

        Pattern p = Pattern.compile(eL.toString());    

        Matcher m = p.matcher(checkValue);    

        boolean flag = m.matches();   

        if(flag )   

        {         

            System.out.println("格式正确");   

        }   

        else  

        {   

            System.out.println("格式错误");   

        }   

  

    } 

public static boolean leapYear(int year) {

Boolean isLeap = false;

if (((year % 100 == 0)  (year % 400 == 0))

|| ((year % 100 != 0)  (year % 4 == 0)))

isLeap = true;

return isLeap;

}

java正则校验年份的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java正则判断是否为日期、java正则校验年份的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。