6

Mails con expresiones regulares en la consola en Linux

En este articulo voy a platicar de como saber si un mail es en efecto un mail. Los ejemplos que voy a usar en este articulo son tomados de la clase de Mails del curso de Expresiones Regulares. Entonces les voy a enseñar mi manera de resolver el problema y les voy a decir porque no es la mejor manera de resolverlo, vamos a darle.

Una cosa importante antes de empezar a hacer esto, es importante tener reglas para que un email sea valido. Por ejemplo, para este ejemplo, un email permite guion bajo (_), punto (.), números y letras, después de esto ya es el arroba (@), el dominio .com y algunos llevan .mx, .co, etc.

Entonces, teniendo estas reglas claras, vamos a utilizar un archivo con los siguiente correos:

esto.es_un.mail@mail.com
esto.es_un.mail+complejo@mail.com
dominio.com
rodrigo.jimenez@yahoo.com.mx
ruben@starbucks.com
esto_no$es_email@dominio.com
no_se_de_internet3@hotmail.com

Ahora, el comando que yo voy a utilizar es el siguiente. Cabe aclarar que yo uso la consola de Linux y el comando grep, pero si lo estas haciendo en Atom no hay ningún problema.

grep -E -no '^[a-z\._0-9]+@[a-z]+\.[a-z]{2,5}\.?[a-z]{2,5}?$' mails.txt

Donde:

  • grep es el comando de Linux
  • -E es la extensión de grep para que me acepte expresiones regulares
  • -no son dos banderas de grep que me mandan el match solo (sin texto extra) y me dice la linea del archivo que contiene el match
  • ^ indica el inicio de la linea
  • [a-z._0-9]+ nos dice que los caracteres validos son de la a-z, del 0-9, punto y guion bajo y el signo mas (+) nos dice que pueden ser 1 o mas caracteres
  • @ el arroba nos dice que debe haber un arroba después de los caracteres, este es obligatorio
  • [a-z]+ después nos dice que va a haber mas letras, estas pueden ser uno o mas
  • . esto nos indica que debe haber un punto después de los caracteres, este debe ser obligatorio
  • [a-z]{2,5} esto nos dice que va a haber unos caracteres después del punto, estos representan al .com, .mx, etc
  • .? aqui nos dice que puede que haya o no otro punto
  • [a-z]{2,5}? aqui nos dice que puede que haya o no otras palabras de entre 2 a 5 caracteres
  • $ por ultimo esta el signo de pesos que nos indica el final de la linea
Escribe tu comentario
+ 2