1

Como saber si un correo esta bien escrito con regExp

Desde la clase de los delimitadores nosotros podemos saber si un correo electrónico esta bien escrito o no y esto solo con los delimitadores y otras cosas que ya se han visto a lo largo del curso, tomando en cuenta que solo vamos en la clase 7. El punto es que en este articulo les enseñare como se puede saber si un correo electrónico esta bien escrito o no.

Propósito de la clase
El propósito es que se empiece a hacer un uso de las regExp y que además se puede demostrar una de las funcionalidades mas comunes de estas, como es la del verificar si el correo electrónico esta bien escrito o no.

¿Cómo saber si esta bien escrito el correo?
Una vez sabiendo como funcionan los delimitadores es sencillo saber como corroborar que un correo esta escrito correctamente. Solo para dar un repaso, voy a mencionar cuales son las utilidades o funciones de cada delimitador

  • Asterisco (*): Este sirve para saber si hay 0 o mas de un carácter, numero, etc.
  • Signo de mas (+): Este nos sirve para saber si hay 1 o mas veces de un carácter, numero, etc.
  • Signo de interrogación (?): Esto nos dice si un numero o carácter esta 0 o 1 vez.

Una vez sabiendo esto, es importante que sepan que yo voy a hacer el ejercicio en la consola de Ubuntu y usare el comando grep. Entonces vamos a hacer esta clase.

Lo primero que vamos a hacer es ver el modelo de un correo electrónico. Este luce de la siguiente manera:
[email protected]
Donde en este ejercicio se consideraran los correo gmail, yahoo & hotmail
Y después del punto solo voy a considerar .mx & .com
Entonces, lo primero que tenemos que hacer es decirle a nuestro código es que queremos que antes del @ haya algo de texto, en general, todo carácter que pueda usarse en una palabra, incluido el _. Para eso ya tenemos una clase que es \w.
Entonces, quedaría de la siguiente manera

grep -E -i'\w+'

En donde el signo + significa que tiene que haber al menos un digito. Después le agregamos el @ que es obligatorio y quedaría de la siguiente manera

grep -E -i'\[email protected]'

Después de esto, como solo estamos considerando los tres correos mas populares (gmail, hotmail, yahoo) vamos a decir que queremos que allá letras de la a-z pero vamos a delimitarlas de 5 a 7 porque hotmail tiene 7 caracteres máximo y las otras direcciones de correo solo tienen 5. Entonces nos quedaría el código de la siguiente manera:

grep -E -i'\[email protected][a-z]{5,7}'

Ya despues tenemos un punto, pero no podemos usar un punto solito ya que eso significaria cualquier caracter y si el usuario inserto una coma tambien la tomaria como valida, por esa razon tenemos que decir explicitamente que es un punto, esto lo hacemos con \. quedando de la siguiente manera:

grep -E -i'\[email protected][a-z]{5,7}\.'

Y ya para finalizar voy a poner el mx o com que van después del punto, por lo tanto lo voy a hacer de la misma forma como lo hice con las direcciones de correo, entonces quedaría de la siguiente manera:

grep -E -i '\w[email protected][a-z]{5,7}\.[a-z]{2,3}'

Entonces, ahora lo que falta es un archivo, por eso yo tengo un archivo llamado file.txt donde puse el siguiente texto para hacer una prueba.

correo1: [email protected]
correo2: mksjhfhwuwocvnsbq.com
correo3: [email protected]
correo4: @kslskaj.com

grep -E -i -no '\[email protected][a-z]{5,7}\.[a-z]{2,3}' file.txt

El resultado debería ser el siguiente:

18:[email protected]
22:[email protected]
23:[email protected]

Si no entendiste lo ultimo que hice (-no), recuerda que te dije que buscaras el comando grep

Escribe tu comentario
+ 2