日期格式dd \ mm \ yyyy的正则表达式是什么?

时间:2011-11-27 03:21:30

标签: java regex

日期格式dd \ mm \ yyyy的正则表达式是什么?我无法找到这种格式的正则表达式?

7 个答案:

答案 0 :(得分:8)

在我看来,最好使用正则表达式验证格式,但使用代码验证有效性(在您的情况下为Java)。尝试检查诸如每月不同日期和闰年以及正则表达式之类的事情是荒谬的。

我建议使用([0-9]{2})\\([0-9]{2})\\([0-9]{4})这样的正则表达式解析日期,然后分别提取每个部分(ddmmyyyy),并尝试创建一个java.util.Date反对他们。

请注意以下事项:

  • 日期通常使用正斜杠(/)而不是反斜杠(\)编写,
  • 在Java字符串中,要在正则表达式中编写反斜杠字符,您必须为两个反斜杠(\\\\)字符实际编写\\。在用java编写反斜杠的java字符串中,我们需要转义字符(又是\)。

答案 1 :(得分:8)

正则表达式dd / mm / yyyy

    String regex = "^([0-2][0-9]||3[0-1])/(0[0-9]||1[0-2])/([0-9][0-9])?[0-9][0-9]$";

答案 2 :(得分:3)

        /**
         * Created with IntelliJ IDEA.
         * User: S34N
         * Date: 2013/07/30
         * Time: 8:21 AM
         * To change this template use File | Settings | File Templates.
         */



        //Import the required classes/packages
        import javax.swing.*;
        import java.text.DateFormat;
        import java.text.SimpleDateFormat;
        import java.util.Date;

        public class dateInputScan {

            public static void main(String args[]) {

                dateInputScan run = new dateInputScan();
                run.dateInputScan();
            }

            public void dateInputScan() {

                //Instantiating variables
                String lvarStrDateOfTransaction = null;
                DateFormat formatter = null;
                Date lvarObjDateOfTransaction = null;

                //Use one of the following date formats.
                lvarStrDateOfTransaction = "29/07/2013";
                //lvarStrDateOfTransaction = "29-07-2013";
                //lvarStrDateOfTransaction = "20130729";
                //lvarStrDateOfTransaction = "2013-07-29";
                //lvarStrDateOfTransaction = "29/07/2013";

                //You can also add your own regex (Regular Expression)
                if (lvarStrDateOfTransaction.matches("([0-9]{2})/([0-9]{2})/([0-9]{4})")) {
                    formatter = new SimpleDateFormat("dd/MM/yyyy");
                } else if (lvarStrDateOfTransaction.matches("([0-9]{2})-([0-9]{2})-([0-9]{4})")) {
                    formatter = new SimpleDateFormat("dd-MM-yyyy");
                } else if (lvarStrDateOfTransaction.matches("([0-9]{4})([0-9]{2})([0-9]{2})")) {
                    formatter = new SimpleDateFormat("yyyyMMdd");
                } else if (lvarStrDateOfTransaction.matches("([0-9]{4})-([0-9]{2})-([0-9]{2})")) {
                    formatter = new SimpleDateFormat("yyyy-MM-dd");
                } else if (lvarStrDateOfTransaction.matches("([0-9]{4})/([0-9]{2})/([0-9]{2})")) {
                    formatter = new SimpleDateFormat("yyyy/MM/dd");
                }

                try {
                    lvarObjDateOfTransaction = formatter.parse(lvarStrDateOfTransaction);
                    JOptionPane.showMessageDialog(null, "Date: " + lvarObjDateOfTransaction);

                } catch (Exception ex) {    //Catch the Exception in case the format is not found.
                    JOptionPane.showMessageDialog(null, ex);
                }
            }
        }

答案 3 :(得分:1)

我试过这个^[0-3]{1}[0-9]{1}/[0-1]{1}[1-2]{1}/[1-9]{1}[0-9]{3}$并且它有效

String dateRegEx="^[0-3]{1}[0-9]{1}/[0-1]{1}[1-2]{1}/[1-9]{1}[0-9]{3}$";
System.out.println(Pattern.matches(dateRegEx, "01/01/1990"));

答案 4 :(得分:1)

([0-2][0-9]||3[0-1])\\(0[0-9]||1[0-2])\\((19|20)\d\d)

以上正则表达式将验证 在0-31范围之间的前2个字符 那么下一组必须包含0-12范围内的字符 然后下一组包含介于1900-2099范围内的年份

它对我来说非常好

答案 5 :(得分:1)

我已经为格式DDMMYY

完成了这个
([0-2]?[0-2][0-9]|3[0-1])(0?0[1-9]|1[0-2])([0-9][0-9])

答案 6 :(得分:1)

如果你想修改版本使用:

  private static final String FIXED_DATE_PATTERN = 
      "(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/((19|20)\\d\\d)";

此强制零天数和月份值,不允许输入00/12/2018或07/00/2018等DD / MM / YYYY