Если вы хотите простое регулярное выражение, то оно не будет точным.
https://www.freeformatter.com/java-regex-tester.html#ad-output предлагает инструмент для проверки вашего регулярного выражения Java. Кроме того, внизу вы можете найти некоторые предлагаемые регулярные выражения для проверки даты.
Формат даты ISO (гггг-мм-дд):
^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$
Формат даты ISO (гггг-мм-дд) с разделителями «-» или «/» или «.» или же ' '. Принудительное использование одного и того же разделителя по дате.
^[0-9]{4}([- /.])(((0[13578]|(10|12))\1(0[1-9]|[1-2][0-9]|3[0-1]))|(02\1(0[1-9]|[1-2][0-9]))|((0[469]|11)\1(0[1-9]|[1-2][0-9]|30)))$
Формат даты в США (мм / дд / гггг)
^(((0[13578]|(10|12))/(0[1-9]|[1-2][0-9]|3[0-1]))|(02/(0[1-9]|[1-2][0-9]))|((0[469]|11)/(0[1-9]|[1-2][0-9]|30)))/[0-9]{4}$
Часы и минуты, 24-часовой формат (ЧЧ: ММ):
^(20|21|22|23|[01]\d|\d)((:[0-5]\d){1,2})$
Удачи