Проверка даты Java с помощью RegEx

В этой проверке даты Java с использованием регулярных выражений мы научимся проверять простые форматы дат, такие как mm/dd/yy, mm/dd/yyyy, dd/mm/yy и dd/mm/yyyy. Здесь мы хотим использовать регулярное выражение, которое просто проверяет, является ли ввод допустимой датой, не пытаясь исключить такие вещи, как 31 февраля.

Мы могли бы подумать, что что-то столь концептуально тривиальное, как проверка даты, должно быть легкой работой для регулярного выражения. Но это не так. Основная проблема в том, что регулярные выражения не имеют дело напрямую с числами.

Мы не можем сказать регулярному выражению «соответствовать числу от 1 до 31». Регулярные выражения работают посимвольно.

Мы используем «3[01]|[12][0-9]|0?[1-9]» для сопоставления 3, за которыми следует 0 или 1, или для сопоставления 1 или 2, за которыми следует любая цифра, или для сопоставления необязательного 0, за которым следует от 1 до 9. Из-за этого вам придется выбрать, насколько простым или точным должно быть ваше регулярное выражение.

1. Регулярное выражение проверки даты Java – позволяет опускать начальные нули

Регулярное выражение: ^[0-3]?[0-9]/[0-3]?[0-9]/(?:[0-9]{2})?[0-9]{2}$

List dates = new ArrayList();dates.add("1/1/11");dates.add("01/01/11");dates.add("01/01/2011");dates.add("01/1/2011");dates.add("1/11/2011");dates.add("1/11/11");dates.add("11/1/11");String regex = "^[0-3]?[0-9]/[0-3]?[0-9]/(?:[0-9]{2})?[0-9]{2}$";Pattern pattern = Pattern.compile(regex);for(String date : dates){Matcher matcher = pattern.matcher(date);System.out.println(date +" : "+ matcher.matches());}

Вывод программы.

1/1/11 : true01/01/11 : true01/01/2011 : true01/1/2011 : true1/11/2011 : true1/11/11 : true11/1/11 : true

2. Регулярное выражение проверки даты Java – требуются начальные нули

Регулярное выражение: ^[0-3][0-9]/[0-3][0-9]/(?:[0-9][0-9])?[0-9][0-9]$

List dates = new ArrayList();//With leading zerosdates.add("01/01/11");dates.add("01/01/2011");//Missing leading zerosdates.add("1/1/11");dates.add("01/1/2011");dates.add("1/11/2011");dates.add("1/11/11");dates.add("11/1/11");String regex = "^[0-3][0-9]/[0-3][0-9]/(?:[0-9][0-9])?[0-9][0-9]$";Pattern pattern = Pattern.compile(regex);for(String date : dates){Matcher matcher = pattern.matcher(date);System.out.println(date +" : "+ matcher.matches());}

Вывод программы.

01/01/11 : true01/01/2011 : true1/1/11 : false01/1/2011 : false1/11/2011 : false1/11/11 : false11/1/11 : false

3. Регулярное выражение проверки даты Java – сопоставьте «мм/дд/гггг» с обязательными ведущими нулями

Регулярное выражение: ^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$

Программа Java для проверки формата даты мм/дд/гггг.

List dates = new ArrayList();//With leading zerosdates.add("01/01/11");dates.add("01/01/2011");//Missing leading zerosdates.add("1/1/11");dates.add("01/1/2011");String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$";Pattern pattern = Pattern.compile(regex);for(String date : dates){Matcher matcher = pattern.matcher(date);System.out.println(date +" : "+ matcher.matches());}

Вывод программы.

01/01/11 : false01/01/2011 : true1/1/11 : false01/1/2011 : false

4. Регулярное выражение проверки даты Java – сопоставьте «dd/mm/yyyy» с обязательными ведущими нулями

Регулярное выражение для проверки формата даты дд/мм/гггг.

Регулярное выражение: ^(3[01]|[12][0-9]|0[1-9])/(1[0-2]|0[1-9])/[0-9]{4}$

List dates = new ArrayList();//With leading zerosdates.add("07/13/2011");dates.add("13/07/2011");//Missing leading zerosdates.add("1/1/11");dates.add("01/1/2011");String regex = "^(3[01]|[12][0-9]|0[1-9])/(1[0-2]|0[1-9])/[0-9]{4}$";Pattern pattern = Pattern.compile(regex);for(String date : dates){Matcher matcher = pattern.matcher(date);System.out.println(date +" : "+ matcher.matches());}

Вывод программы.

07/13/2011 : false13/07/2011 : true1/1/11 : false01/1/2011 : false

Вы можете свободно использовать и редактировать приведенные выше регулярные выражения для проверки дат в соответствии со своими потребностями.

Прокрутить вверх