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

¿Usar Java regex para aceptar cadenas de fecha (MM-dd-yyyy formato) ?

A continuación, con dd-MM-Expresión regular para coincidir con la fecha en el formato yyyy.

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

Coincidir con la fecha en la cadena en este formato.

  • Compilarcompile()La expresión anterior del método de la clase Pattern.

  • Saltar la cadena de entrada necesaria comomatcher()El parámetro del método de la clase Pattern, obtiene el objeto Matcher.

  • matches()Si ocurre una coincidencia, el método de la clase Matcher devuelve true, de lo contrario devuelve false. Por lo tanto, llame a este método para verificar los datos.

Ejemplo1

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}";
      //Creación de un objeto de patrón
      Pattern pattern = Pattern.compile(regex);
      //Coincidencia del patrón compilado en la cadena
      Matcher matcher = pattern.matcher(date);
      boolean bool = matcher.matches();
      if(bool) {
         System.out.println("La fecha es válida");
      } else {
         System.out.println("La fecha no es válida");
      }
   }
}

Resultados de salida

La fecha es válida

matches()El método de la clase String acepta una expresión regular y la compara con la cadena actual, devolviendo true si coinciden, false en caso contrario. Por lo tanto, para verificar si la fecha proporcionada (en formato de cadena) es el formato necesario-

  • Obtener la cadena de fecha

  • matches()Llame al método pasándole como parámetro la expresión regular superior.

Ejemplo2

import java.util.Scanner;
public class Just {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Ingrese su nombre: ");
      String name = sc.nextLine();
      System.out.println("Ingrese su fecha de nacimiento: ");
      String dob = sc.nextLine();
      //La expresión regular con MM-DD-Formato YYY acepta fechas
      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("La fecha de nacimiento proporcionada es válida");
      } else {
         System.out.println("La fecha de nacimiento proporcionada no es válida");
      }
   }
}

Salida1

Ingrese su nombre:
Janaki
Ingrese su fecha de nacimiento:
26/09/1989
La fecha de nacimiento proporcionada no es válida

Salida2

Ingrese su nombre:
Janaki
Ingrese su fecha de nacimiento:
09/26/1989
La fecha de nacimiento proporcionada es válida