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

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

在我看来,最好使用正则表达式validation格式,但使用代码validation有效性(在您的情况下为Java)。 尝试检查诸如每月不同的天数以及用正则表达式闰年这样的事情将是荒谬的冗长。

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

请注意以下事项:

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

正则表达式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]$"; 
  /** * 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); } } } 

我试过这个^[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")); 

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

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

它对我来说非常好

我为格式DDMMYY做了这个

 ([0-2]?[0-2][0-9]|3[0-1])(0?0[1-9]|1[0-2])([0-9][0-9]) 

如果你想修复版本使用:

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

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