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

Python019

Java里面效验日期的正则表达式,第1张

 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

}

提取以后还要处理一下

看一下下边的例子。结果

2012-2-14

2015-13-35 (这样非法的就需要你自己来处理了。)

--------------------------------------------------------------------------------

import java.util.regex.Matcher

import java.util.regex.Pattern

public class Other {

public static void main(String[] args) {

String str = "本页面最后修订于2012年2月14日 (星期二) 2015-13/35日 11:29。2012-135/14<br /></li>"

Pattern p = Pattern

.compile("[0-9]{4}[年|\\-|/][0-9]{1,2}[月|\\-|/][0-9]{1,2}")

Matcher m = p.matcher(str)

while (m.find()) {

if (!"".equals(m.group())) {

String date = m.group()

date = date.replaceAll("年", "-")

date = date.replaceAll("月", "-")

date = date.replaceAll("/", "-")

System.out.println(date)

}

}

}

}

在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。

正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

正则表达式的特点是:

1、灵活性、逻辑性和功能性非常强;

2、可以迅速地用极简单的方式达到字符串的复杂控制。

3、对于刚接触的人来说,比较晦涩难懂。

由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。