java中Js验证日期的正则表达式格式为:yyyyMMdd

Python013

java中Js验证日期的正则表达式格式为:yyyyMMdd,第1张

var result=data.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(\/)(10|12|0?[13578])(\/)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(\/)(11|0?[469])(\/)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(\/)(0?2)(\/)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(\/)(0?2)(\/)(29)$)|(^([3579][26]00)(\/)(0?2)(\/)(29)$)|(^([1][89][0][48])(\/)(0?2)(\/)(29)$)|(^([2-9][0-9][0][48])(\/)(0?2)(\/)(29)$)|(^([1][89][2468][048])(\/)(0?2)(\/)(29)$)|(^([2-9][0-9][2468][048])(\/)(0?2)(\/)(29)$)|(^([1][89][13579][26])(\/)(0?2)(\/)(29)$)|(^([2-9][0-9][13579][26])(\/)(0?2)(\/)(29)$))/)

将所有的(-)改成(\/)不就得了

我很久以前好像写过一个和这差不多的正则

 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

}

public static Date formatDate_1(String date){

Date day=null

try {

SimpleDateFormat format=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss") day = format.parse(date)

//SimpleDateFormat format2=new SimpleDateFormat("yyyy-MM-dd")

// result=format2.format(day)

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

return day

}