Cree la expresión regular de fecha MM/DD/YYYY en PHP

Subodh Poudel 22 enero 2022
Cree la expresión regular de fecha MM/DD/YYYY en PHP

Este tutorial demostrará la forma de crear una expresión regular para el formato de fecha mm/dd/yyyy en PHP.

Crear la expresión regular de fecha MM/DD/YY en PHP

Podemos usar la expresión regular para validar la entrada del usuario de acuerdo con las reglas aplicadas en la expresión. Podemos validar cualquier entrada usando la expresión regular, e incluso podemos validar el formato de fecha mm/dd/yyyy usando la expresión regular.

Podemos crear una expresión regular y almacenarla en una variable. Usaremos la función preg_match() para probar entradas de formato de fecha aleatorias con la expresión regular.

A continuación se muestra un patrón de expresiones regulares para el formato de fecha mm/dd/yyyy. Lo discutiremos en detalle.

~(0[1-9]|1[012])[-/](0[1-9]|[12][0-9]|3[01])[-/](19|20)\d\d~

Un patrón de expresiones regulares siempre debe tener un delimitador correcto alrededor. Aquí, el símbolo ~ es el delimitador que rodea el patrón.

A continuación, debemos escribir el formato de los meses en mm/dd/yyyy.

El mes se representa de 01-12 en el formato. Por lo tanto, el primer dígito del mes puede ser 0 o 1, por lo que escribimos 0[1-9] para los meses a partir de 01-09. El 1-9 dentro del corchete indica el número escrito después de 0.

Del mismo modo, solo podemos escribir 10, 11 y 12 para el mes, comenzando con 1. Por lo tanto, hemos escrito 012 dentro de los corchetes para 1 como 1[012].

Usamos el | símbolo para lograr un O lógico. Así que lo usamos para separar las reglas como (0[1-9]|1[012]).

Finalmente, encerramos el patrón entre paréntesis para indicar el final de una sección.

A continuación, tenemos que establecer la regla para los separadores en el formato mm/dd/yyyy. El patrón anterior permite los separadores de los símbolos -, / y ..

Ahora, escribimos el patrón durante días. Los días son 1-30, por lo que los días 01-09 se pueden escribir como 0[1-9], 10-29 se pueden escribir como 12[0-9] y los días 30-31 se puede escribir como 3[01].

Usamos la misma regla para los separadores después de los días en el formato mm/dd/yyyy.

Hemos escrito 19|20 como los dos primeros dígitos del año, lo que significa que el año solo puede comenzar desde 19 y 20. Usamos el patrón \d\d después de 19|20 para indicar dos dígitos que vienen después de 19 o 20.

Así es como funciona la expresión regular anterior. Ahora podemos verificar algunos formatos de fecha de prueba con la expresión regular anterior.

Para eso, cree una variable $reg y almacene la expresión regular que escribimos anteriormente en ella. A continuación, cree un array $dates y almacene estos formatos de fecha aleatorios.

['03/22/2021', '22/22/2021', '03\22\2021', '03-22-2021', '03/22/1865']

Luego, use el bucle foreach para repetir la variable $dates como $date. Compare la variable $date con la variable $reg utilizando la función preg_match().

Al hacer esto, podemos verificar si las entradas de prueba cumplen con el patrón de expresiones regulares del formato mm/dd/yyyy.

Código de ejemplo:

$reg = '~(0[1-9]|1[012])[-/](0[1-9]|[12][0-9]|3[01])[-/](19|20)\d\d~';

$dates =['03/22/2021', '22/22/2021', '03\22\2021', '03-22-2021', '03/22/1865'] ;
foreach($dates as $date){
 if(!preg_match($reg, $date)) {
 echo 'the date format '.$date.' is incorrect'."<br>"; 
 } else{
 echo 'the date format '.$date.' is correct'."<br>";
 } 
}

Producción :

the date format 03/22/2021 is correct
the date format 22/22/2021 is incorrect
the date format 03\22\2021 is incorrect
the date format 03-22-2021 is correct
the date format 03/22/1865 is incorrect

Aquí, el primer formato sigue todas las reglas. El segundo formato es incorrecto porque el mes no puede ser 22.

El tercero es incorrecto porque no hemos especificado el separador \. Hemos especificado el separador -, por lo que la cuarta fecha es correcta. El año es el 1800 en el último, por lo que es incorrecto.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Artículo relacionado - PHP Date

Artículo relacionado - PHP Regex