English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Использовать ли Java регулярные выражения для принятия строки даты (формата MM-dd-yyyy)?

Ниже приведен регулярный выражение для совпадения даты в формате dd-MM-yyyy.

^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$

Совпадение даты в строке в данном формате.

  • Компилироватьcompile()выражения метода класса Pattern.

  • Пропустить необходимую строку ввода в качествеmatcher()Параметр метода класса Pattern, получающий объект Matcher.

  • matches()Если совпадение произошло, то метод класса Matcher возвращает true, в противном случае false. Таким образом, этот метод вызывается для проверки данных.

Пример 1

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatchingDate {
   public static void main(String[] args) {
      String date = "01/12/2019";
      String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$";
      //Создание объекта шаблона
      Pattern pattern = Pattern.compile(regex);
      //Совпадение строки с уже скомпилированным шаблоном
      Matcher matcher = pattern.matcher(date);
      boolean bool = matcher.matches();
      if(bool) {
         System.out.println("Дата действительна");
      } else {
         System.out.println("Дата недействительна");
      }
   }
}

Результат вывода

Дата действительна

matches()Метод класса String принимает регулярное выражение и сравнивает его с текущей строкой, возвращает true, если совпадает,否则 false. Таким образом, чтобы проверить, является ли указанная дата (в строковом формате) необходимым форматом -

  • Получение строки даты.

  • matches()Вызов метода, передав ему регулярное выражение в качестве параметра.

Пример 2

import java.util.Scanner;
public class Just {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Введите ваше имя:");
      String name = sc.nextLine();
      System.out.println("Введите дату рождения:");
      String dob = sc.nextLine();
      // Регулярное выражение принимает дату в формате MM-DD-YYY
      String regex = "^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$";
      boolean result = dob.matches(regex);
      if(result) {
         System.out.println("Указанная дата рождения действительна");
      } else {
         System.out.println("Указанная дата рождения недействительна");
      }
   }
}

Вывод 1

Введите ваше имя:
Janaki
Введите дату рождения:
26.09.1989
Указанная дата рождения недействительна

Вывод 2

Введите ваше имя:
Janaki
Введите дату рождения:
26.09.1989
Указанная дата рождения действительна
Вам может понравиться