Regex lookarounds 使用regexjava验证日期格式

Regex lookarounds 使用regexjava验证日期格式,regex-lookarounds,Regex Lookarounds,我想验证用户提供的任何有效日期格式,我为所有其他格式编写了regex,但无法同时区分dd/MM/yyyy和MM/dd/yyyy 到目前为止你都试了些什么?发布您的代码其他验证正则表达式已在下面的答案中写入,如果需要任何更正,请建议我进行改进。您是在要求正则表达式还是向我们展示您已经解决的问题?在一种方法中要求验证dd/MM/yyyy和MM/dd/yyyyy,我无法做到:( Can we validate dd/MM/yyyy and MM/dd/yyyy format together usin

我想验证用户提供的任何有效日期格式,我为所有其他格式编写了regex,但无法同时区分dd/MM/yyyy和MM/dd/yyyy

到目前为止你都试了些什么?发布您的代码其他验证正则表达式已在下面的答案中写入,如果需要任何更正,请建议我进行改进。您是在要求正则表达式还是向我们展示您已经解决的问题?在一种方法中要求验证dd/MM/yyyy和MM/dd/yyyyy,我无法做到:(
Can we validate dd/MM/yyyy and MM/dd/yyyy format together using regex.
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * 
 */

/**
 * @author Ravi Shankar
 *
 */
public class DateFormater {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new DateFormater().dateParser("CURR-MAY");
    }


    public String dateParser(String paramDate){

        String date=null;
        DateFormat df= null;
        DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");

        // 
        if(null != paramDate && !paramDate.equalsIgnoreCase("")){
            paramDate = paramDate.trim();
            if(paramDate.matches("\\d{4}[/]\\d{1,2}[/]\\d{1,2}")){        
                df = new SimpleDateFormat("yyyy/MM/dd");
            }else if(paramDate.matches("\\d{4}[-]\\d{1,2}[-]\\d{1,2}")){  
                df = new SimpleDateFormat("yyyy-MM-dd");
            }else if(paramDate.matches("\\d{4}[.]\\d{1,2}[.]\\d{1,2}")){  
                df = new SimpleDateFormat("yyyy.MM.dd");
            }else if(paramDate.matches("\\d{1,2}[/]\\d{1,2}[/]\\d{2}")){  
                df = new SimpleDateFormat("MM/dd/yy");
            }else if(paramDate.matches("\\d{1,2}[-]\\d{1,2}[-]\\d{2}")){  
                df = new SimpleDateFormat("MM-dd-yy");
            }else if(paramDate.matches("\\d{1,2}[.]\\d{1,2}[.]\\d{2}")){  
                df = new SimpleDateFormat("MM.dd.yy");
            }else if(paramDate.matches("\\d{1,2}[/]\\d{1,2}[/]\\d{4}")){  
                df = new SimpleDateFormat("MM/dd/yyyy");
            }else if(paramDate.matches("\\d{1,2}[-]\\d{1,2}[-]\\d{4}")){  
                df = new SimpleDateFormat("MM-dd-yyyy");
            }else if(paramDate.matches("\\d{1,2}[.]\\d{1,2}[.]\\d{4}")){  
                df = new SimpleDateFormat("MM.dd.yyyy");
            }else if(paramDate.matches("\\d{1,2}[/]\\d{1,2}")){  
                df = new SimpleDateFormat("MM/dd/yyyy");
                paramDate =  addYear(paramDate);
            }else if(paramDate.matches("\\d{1,2}[-]\\d{1,2}")){  
                df = new SimpleDateFormat("MM-dd-yyyy");
                paramDate =  addYear(paramDate);
            }else if(paramDate.matches("\\d{1,2}[.]\\d{1,2}")){  
                df = new SimpleDateFormat("MM.dd.yyyy");
                paramDate =  addYear(paramDate);
            }else if(paramDate.matches("\\d{1,2}[/]\\d{4}")){  
                df = new SimpleDateFormat("MM/yyyy");
            }else if(paramDate.matches("\\d{1,2}[-]\\d{4}")){  
                df = new SimpleDateFormat("MM-yyyy");
            }else if(paramDate.matches("\\d{1,2}[.]\\d{4}")){  
                df = new SimpleDateFormat("MM.yyyy");
            }else if(paramDate.matches("\\S{3}[/]\\d{2}")){  
                df = new SimpleDateFormat("MMM/yy");
            }else if(paramDate.matches("\\S{3}[-]\\d{2}")){  
                df = new SimpleDateFormat("MM-yy");
            }else if(paramDate.matches("\\S{3}[.]\\d{2}")){  
                df = new SimpleDateFormat("MM.yy");
            }else if(paramDate.matches("\\d{1,2}[/]\\S{3}")){  
                df = new SimpleDateFormat("MM/dd/yyyy");
                paramDate =  addYear2(paramDate);
            }else if(paramDate.matches("\\d{1,2}[-]\\S{3}")){  
                df = new SimpleDateFormat("MM-dd-yyyy");
                paramDate =  addYear2(paramDate);
            }else if(paramDate.matches("\\d{1,2}[.]\\S{3}")){  
                df = new SimpleDateFormat("MM.dd.yyyy");
                paramDate =  addYear2(paramDate);
            }else if(paramDate.matches("\\S{3}")){  
                df = new SimpleDateFormat("MM/dd/yyyy");
                paramDate =  addYear3(paramDate);
            }else if(paramDate.matches("\\S{3,6}[-]\\S{3}")){  
                df = new SimpleDateFormat("MM/dd/yyyy");
                paramDate =  addYear3(paramDate);
            }

            try {
                date = sdf.format(df.parse(paramDate));
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        return date;
    }


    /**
     * @param paramDate
     * Adding Year in MM/DD
     * @return
     */
    public String addYear(String paramDate){
        int month = 0;
        String sp= "";
        if(paramDate.matches("\\d{1,2}[/]\\d{1,2}")){  
            month =Integer.parseInt(paramDate.split("/")[0]);
            sp="/";
        }else if(paramDate.matches("\\d{1,2}[-]\\d{1,2}")){  
            month =Integer.parseInt(paramDate.split("-")[0]);
            sp="-";
        }else if(paramDate.matches("\\d{1,2}[.]\\d{1,2}")){  
            month =Integer.parseInt(paramDate.split(".")[0]);
            sp=".";
        }

        month =Integer.parseInt(paramDate.split("/")[0]);
        Calendar cal = Calendar.getInstance();
        int cm = cal.get(Calendar.MONTH) + 1;
        int year = 0;
        if((month - cm)>=0){
            year = cal.get(Calendar.YEAR);
        }else{
            year = cal.get(Calendar.YEAR)+1;
        }
        return paramDate= paramDate+sp+year;
    }


    /**
     * @param paramDate
     * Converting dd/MMM to MM/dd and adding yyyy
     * @return
     */
    public String addYear2(String paramDate){
        String date="";
        DateFormat sdf = new SimpleDateFormat("MM/dd"); ;
        DateFormat df = new SimpleDateFormat("dd/MMM"); ;
        if(paramDate.matches("\\d{2}[-]\\S{3}")){  
            df = new SimpleDateFormat("dd-MMM");
        }else if(paramDate.matches("\\d{2}[.]\\S{3}")){  
            df = new SimpleDateFormat("dd.MMM");
        }
        try {
            date = addYear(sdf.format(df.parse(paramDate)));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return date;
    }

    /**
     * @param paramDate
     * converting  MMM to MM/dd and adding yyyy 
     * @return
     */
    public String addYear3(String paramDate){
        String date="";
        DateFormat sdf = new SimpleDateFormat("MM/dd");
        DateFormat df = new SimpleDateFormat("MMM"); 
        if(paramDate.matches("\\S{3,6}[-]\\S{3}")){
            paramDate=paramDate.split("-")[1];
        }
        try {
            date = addYear(sdf.format(df.parse(paramDate)));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return date;
    }

}