「java正则校验年份」java正则判断是否为日期
今天给各位分享java正则校验年份的知识,其中也会对java正则判断是否为日期进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、求java 正则表达式验证年月有效性。注意是“年月”有效性。
- 2、JAVA 正则法则如有验证年份
- 3、用JAVA正则表达式怎么匹配年月日(比如要求输入为出生日期)
- 4、java判断一个字符串是不是年份
- 5、java实现输入年份判断在哪一天(正则表达式待
- 6、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正则校验年份的信息别忘了在本站进行查找喔。
发布于:2022-12-01,除非注明,否则均为
原创文章,转载请注明出处。