Las expresiones regulares o patrones no son más que un grupo de caracteres orientados a cumplir una determinada condición. Por ejemplo, si queremos validar un número de DNI podemos hacerlo mediante sentencias if anidadas, comprobando su longitud, si contiene números o letras, etc. y también podemos hacerlo comparándola con una expresión regular. No entraré mucho en detalle, porque hay bastantes sitios que lo explican y seguro que además lo hacen mucho mejor que yo.
Pongo a continuación alguno de los sitios que he consultado:Expresiones regulares en la Wikipedia.
Tutorial rápido para crear expresiones regulares (está en inglés):
http://www.regular-expressions.info/
Buscador de expresiones regulares:
http://regexlib.com/
Bueno, la principal razón por la que he abierto este post es la de incluir la expresión regular que he (iba a decir creado) adaptado a mis gustos desde otras que he encontrado por ahi. Es para validar campos con la fecha, no solo en lo que es el formato en sí sino también que los valores sean los correctos. La he limitado a los años 2000-2099 por comodidad, y he incluido seis formatos diferentes: 21/12/2000 21/12/09 21-12-2009 21-12-09 21122009 211209 De esta forma, contemplo las formas más comunes de escribir la fecha. el objetivo es que al introducir la fecha en un textbox me permita validarla. Adicionalmente, se podría utilizar también las expresiones regulares para convertir la fecha a un formato concreto, para que al resultar válidas las transforme a un formato concreto.
He dividido la expresión en dos patrones, para que el que quiera usar uno solo pueda hacerlo.
//Formato de Fecha: 12/12/2009 12-12-2009 12122009
//Fecha Minima: 01/01/2000
//Fecha Maxima: 31/12/2099
string Patron1 = "(((0[1-9]|[12][0-9]|3[01])([/]|[-])?(0[13578]|10|12)([/]|[-])?(’’d{4}))" +
"|(([0][1-9]|[12][0-9]|30)([/]|[-])?(0[469]|11)([/]|[-])?(’’d{4}))" +
"|((0[1-9]|1[0-9]|2[0-8])([/]|[-])?(02)([/]|[-])?(’’d{4}))" +
"|((29)([/]|[-])?(02)([/]|[-])?((20)[02468][048]))" +
"|((29)([/]|[-])?(02)([/]|[-])?((20)[13579][26])))";
//Fecha 12/12/09 12/12/09 121209
//Fecha Minima: 01/01/00
//Fecha Maxima: 31/12/99
string Patron2 = "(((0[1-9]|[12][0-9]|3[01])([/]|[-])?(0[13578]|10|12)([/]|[-])?(’’d{2}))" +
"|(([0][1-9]|[12][0-9]|30)([/]|[-])?(0[469]|11)([/]|[-])?(’’d{2}))" +
"|((0[1-9]|1[0-9]|2[0-8])([/]|[-])?(02)([/]|[-])?(’’d{2}))" +
"|((29)([/]|[-])?(02)([/]|[-])?([02468][048]))" +
"|((29)([/]|[-])?(02)([/]|[-])?([13579][26])))";
string Patron = "^("+Patron1+"|"+Patron2+")$";
Regex ExpresionRegular = new Regex(Patron);
{
}
Para el que quiera usarlo, recordar que hay que hacer referencia al espacio de nombres Text.RegularExpressions.
No hay comentarios:
Publicar un comentario