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

Java 日期格式dd\mm\yyyy的正则表达式是什么?,java,regex,Java,Regex,日期格式dd\mm\yyyy的正则表达式是什么?我无法找到此格式的正则表达式?在我看来,最好使用正则表达式验证格式,但使用代码(在您的例子中是Java)验证有效性。试图用正则表达式检查诸如每月不同的天数和闰年之类的事情是荒谬的冗长 我建议使用类似于([0-9]{2})\([0-9]{2})\([0-9]{4})的正则表达式解析日期,然后提取每个片段(dd、mm和yyyyy),并尝试从中创建java.util.date对象 注意以下几点: 日期通常用正斜杠(/)而不是反斜杠(\)书写 在Java

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

在我看来,最好使用正则表达式验证格式,但使用代码(在您的例子中是Java)验证有效性。试图用正则表达式检查诸如每月不同的天数和闰年之类的事情是荒谬的冗长

我建议使用类似于
([0-9]{2})\([0-9]{2})\([0-9]{4})
的正则表达式解析日期,然后提取每个片段(
dd
mm
yyyyy
),并尝试从中创建
java.util.date
对象

注意以下几点:

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

模式dd/mm/yyyy的regex

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

我尝试了这个
^[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)

以上正则表达式将进行验证 0-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中输入像2018年12月00日或2018年7月00日这样的输入

使用答案,并将斜杠(/)更改为双反斜杠(\\)@AlexTaylor感谢您的快速回复,我正在寻找上述日期格式的常规exp,你能告诉我吗?你真的想要带反斜杠的日期格式吗?+1不应该是
([0-9]{2})\\\\([0-9]{2})\\\\\([0-9]{4})
?是的,应该是Java字符串。上面的正则表达式是一种通用正则表达式,但如果使用Java字符串,则需要使用四个斜杠(请参见我答案末尾的注释(b))。感谢您的澄清。使用此正则表达式,您最终会接受无效日期,如“99\99\9999”
  private static final String FIXED_DATE_PATTERN = 
      "(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/((19|20)\\d\\d)";