La expresiones regulares son patrones utilizados para encontrar una determinada combinación de caracteres dentro de una cadena de texto.
Con ello se utiliza para validar datos ingresados por el usuario, a continuación, se ejecutará un ejemplo donde se validará la ESTRUCTURA de un email con una expresión regular.
A continuación, se mostrará a través de imágenes GIF la manera en que se puede validar la estructura de la cadena, en este caso de un correo electrónico. En otro post agregare algunas expresiones regulares para que puedan utilizarlas.
También al final dejare el codigo para que puedan copiarlo y modificarlo.
1.- Abriremos visual studio y generamos un proyecto Forms. Agregaremos a la forma (Form1) una etiqueta (label1), un cuadro de texto (textBox1) y un botón (button).
2.- Modificaremos el texto que se muestra en cada uno, el texto de la etiqueta 1 (label1) le pondremos el texto correo electrónico, al botón (button1) el texto será validar.
3.- Generamos el método del clic del botón, para ello daremos doble click sobre el botón. Al mostrar la parte del código agregaremos en la parte superior la referencia para poder usar "regex" que es la clase con la cual se realiza el "match".
En la parte superior se agrega lo siguiente:
using System.Text.RegularExpressions;
4.- Crearemos las siguiente variables:
- str_correo: tipo cadena (string), es donde almacenaremos el valor de la caja de texto.
- bol_valido: tipo boleano (bool), es donde se verá reflejado si la expresión regular hizo "match" o no.(verdadero si es correcto, falso si es incorrecto).
Después invocamos el método "Regex.IsMatch" el cual se encarga de comparar el texto con la expresión regular, regresando como valor un "true" si el texto hizo match con la expresión regular o "false" si no lo hizo.
Como se observa el método "Regex.IsMatch" recibe dos parámetros, uno es el valor de la caja de texto y el siguiente es la expresión regular, es importante interponer el "@" antes de la expresión regular. Como se observa en la imagen anterior, se genera un "if" donde validamos si es verdadero o falso. Si es verdadero muestra una mensaje con el texto de que el correo es correcto, si no, muestra un mensaje.
Si ustedes ejecutan el programa en este instante ustedes podrán observar que funciona correctamente.
Mientras realizaba el tutorial se me ocurrio agregar el metodo "KEYPRESS" de la caja de texto (textBox1) que se podría decir que es una validación al momento de presionar una tecla.
5.- Para ello agregue una etiqueta (label2) la cual posicione debajo de la caja de texto. Genere el método "Form_load" desde el cual modificó el texto de la etiqueta (label2) y cambie el color a rojo. Después en el metodo "KEYPRESS" copio y pego exactamente lo mismo que el método "CLICK" del botón. Solo que en lugar de mostrar el mensaje en el "messageBox" lo muestro en el texto de la etiqueta (label2).
Ahora bien, si ustedes ejecutan el programa hasta este punto serán testigos de que al ir escribiendo aparecerá en la etiqueta que el correo no es valido y cambiara cuando el correo sea valido, si tener que oprimir el boton.
Bien, tambien les muestro la manera de reutilizar un fragmento de código, por qué?, porque en ocasiones tendremos que utilizar en este caso la validación en diferentes partes del programa. Por que es recomendable hacerlo de esta manera ya que es mucho más fácil al momento de dar mantenimiento al código. por ejemplo si tuviéramos 10 métodos y en todos usaramos la misma expresión regular. Si copiamos y pegamos como lo hice anteriormente, tendríamos que modificar 10 veces la expresión regular en dado caso que estuviese mal. A continuación, te muestro la manera de generar un método que regresa un booleano y recibe una cadena (string).
Para finalizar te dejo el código generado para este proyecto.
- str_correo: tipo cadena (string), es donde almacenaremos el valor de la caja de texto.
- bol_valido: tipo boleano (bool), es donde se verá reflejado si la expresión regular hizo "match" o no.(verdadero si es correcto, falso si es incorrecto).
Después invocamos el método "Regex.IsMatch" el cual se encarga de comparar el texto con la expresión regular, regresando como valor un "true" si el texto hizo match con la expresión regular o "false" si no lo hizo.
Como se observa el método "Regex.IsMatch" recibe dos parámetros, uno es el valor de la caja de texto y el siguiente es la expresión regular, es importante interponer el "@" antes de la expresión regular. Como se observa en la imagen anterior, se genera un "if" donde validamos si es verdadero o falso. Si es verdadero muestra una mensaje con el texto de que el correo es correcto, si no, muestra un mensaje.
Si ustedes ejecutan el programa en este instante ustedes podrán observar que funciona correctamente.
Mientras realizaba el tutorial se me ocurrio agregar el metodo "KEYPRESS" de la caja de texto (textBox1) que se podría decir que es una validación al momento de presionar una tecla.
5.- Para ello agregue una etiqueta (label2) la cual posicione debajo de la caja de texto. Genere el método "Form_load" desde el cual modificó el texto de la etiqueta (label2) y cambie el color a rojo. Después en el metodo "KEYPRESS" copio y pego exactamente lo mismo que el método "CLICK" del botón. Solo que en lugar de mostrar el mensaje en el "messageBox" lo muestro en el texto de la etiqueta (label2).
Ahora bien, si ustedes ejecutan el programa hasta este punto serán testigos de que al ir escribiendo aparecerá en la etiqueta que el correo no es valido y cambiara cuando el correo sea valido, si tener que oprimir el boton.
Bien, tambien les muestro la manera de reutilizar un fragmento de código, por qué?, porque en ocasiones tendremos que utilizar en este caso la validación en diferentes partes del programa. Por que es recomendable hacerlo de esta manera ya que es mucho más fácil al momento de dar mantenimiento al código. por ejemplo si tuviéramos 10 métodos y en todos usaramos la misma expresión regular. Si copiamos y pegamos como lo hice anteriormente, tendríamos que modificar 10 veces la expresión regular en dado caso que estuviese mal. A continuación, te muestro la manera de generar un método que regresa un booleano y recibe una cadena (string).
Para finalizar te dejo el código generado para este proyecto.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Text.RegularExpressions; namespace expresiones_regulares { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string str_correo = textBox1.Text; bool bol_valido = false; bol_valido = validarCorreo(str_correo); if (bol_valido) { MessageBox.Show("EL CORREO ES VALIDO"); } else { MessageBox.Show("EL CORREO NO ES VALIDO"); } } private void Form1_Load(object sender, EventArgs e) { label2.Text = ""; label2.ForeColor = Color.Red; } private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { string str_correo = textBox1.Text; bool bol_valido = false; bol_valido = validarCorreo(str_correo); if (bol_valido) { label2.Text = "EL CORREO ES VALIDO"; } else { label2.Text = "EL CORREO NO ES VALIDO"; } } public bool validarCorreo(string str_value) { return Regex.IsMatch(str_value, @"^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$"); } } }
Comentarios