En los sistemas de información la frase "Basura entra basura sale" es muy conocida, pero esta frase nunca nos debe servir para justificar las salidas incorrectas de un sistema, nos debe servir como experiencia que nos lleve a validar de mejor manera la información digitada por el usuario.
El Dot. Net Framework nos proporciona una serie de clases contenidas en el namespace system.text.regularexpressions que nos permiten validar la información del usuario mediante patrones conocidos como regular expression. Sinceramente debo indicar que la creación de estos patrones es bastante complicada y difícil de darle mantenimiento.
Para poder validar un string debemos primero crear un patrón, este patrón consta de una serie de caracteres que tienen un significado especial, veamos algunos de estos caracteres especiales y su significado.
Carácter | Uso |
^ | Inicio del string |
$ | Fin del string |
\d{} | Solo dígitos numéricos, la cantidad la determina el número colocado entre {} |
[ ] | Valida que el dígito sea igual a cualquiera de los caracteres contenidos entre las llaves |
[ - ] | Valida que el dígito sea igual a cualquiera de los caracteres contenidos entre las llaves |
* | Implica que repite el carácter precedente o puede no existir carácter |
+ | Implica que repite el carácter precedente estrictamente (debe de existir) |
\s | Implica un espacio en blanco, puede ser espacio o tabulación |
Veamos algunos ejemplos:
Para validar que se digite un teléfono válido, con el siguiente formato ###-#### podríamos usar el siguiente patrón:
Dato a Validar | Formato | Patrón |
Número telefónico | ###-#### | ^\d{3}-\d{4}$ |
Cédula (con guiones) | #-###-### | ^[1-9]-\d{3}-\d{3}$ |
Correo Electrónico | nombre@dominio | ^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)(([\w-]+\.)+))([a-zA-Z]{2,4}[0-9]{1,3})(\]?)$ |
Veamos un fragmento de código que nos aclare cómo utilizar regular expression
Imports System.Text.RegularExpressions Module Module1 Sub Main() Dim Mascara As String = "" Dim PalabraaEvaluar As String = "" While PalabraaEvaluar <> "Salir" Console.Write("Máscara: ") Mascara = Console.ReadLine() Console.Write("Palabra: ") PalabraaEvaluar = Console.ReadLine() If Regex.IsMatch(PalabraaEvaluar, Mascara) Then Console.WriteLine("Pasa la evaluación") Else Console.WriteLine("NO Pasa la evaluación") End If Console.ReadKey() End While End Sub End Module |
También podemos usar regular expressions para extraer fragmentos de un string, utilizando patrones similares a los anteriormente vistos
Imports System.Text.RegularExpressions Module Module1 Sub Main() Dim Completo As String = "Nombre: Alejandro Soto" Dim Extracto As Match Extracto = Regex.Match(Completo, "Nombre: (.*$)") Console.WriteLine(Extracto.Groups(1)) Console.ReadKey() End Sub End Module |
Hay libros completes sobre regular expression, el sentido de este post es solo hacer una breve reseña que sirva de introducción al tema.
2 comentarios:
Excelente, me sirvió montones la expresión regular de cedulas. Saludos
excelente el de la cédula gracias
Publicar un comentario