Un buen tutorial para iniciarse en el manejo de expresiones regulares lo podemos encontrar en Desarrolloweb. Para realizar el ejemplo siguiente no hay porque conocer en profundidad su manejo. A continuación muestro una serie de tablas a modo de chuleta para que podamos utilizarlas con un simple corta y pega.
La tabla siguiente contiene los caracteres especiales de las expresiones regulares.
Carácter | Texto buscado |
---|---|
^ | Principio de entrada o línea. |
$ | Fin de entrada o línea. |
* | El carácter anterior 0 o más veces. |
+ | El carácter anterior 1 o más veces. |
? | El carácter anterior una vez como máximo (es decir, indica que el carácter anterior es opcional). |
. | Cualquier carácter individual, salvo el de salto de línea. |
x|y | x o y. |
{n} | Exactamente n apariciones del carácter anterior. |
{n,m} | Como mínimo n y como máximo m apariciones del carácter anterior. |
[abc] | Cualquiera de los caracteres entre corchetes. Especifique un rango de caracteres con un guión (por ejemplo, [a-f] es equivalente a [abcdef]). |
[^abc] | Cualquier carácter que no esté entre corchetes. Especifique un rango de caracteres con un guión (por ejemplo, [^a-f] es equivalente a [^abcdef]). |
\b | Límite de palabra (como un espacio o un retorno de carro). |
\B | Cualquiera que no sea un límite de palabra. |
\d | Cualquier carácter de dígito. Equivalente a [0-9]. |
\D | Cualquier carácter que no sea de dígito. Equivalente a [^0-9]. |
\f | Salto de página. |
\n | Salto de línea. |
\r | Retorno de carro. |
\s | Cualquier carácter individual de espacio en blanco (espacios, tabulaciones, saltos de página o saltos de línea). |
\S | Cualquier carácter individual que no sea un espacio en blanco. |
\t | Tabulación. |
\w | Cualquier carácter alfanumérico, incluido el de subrayado. Equivalente a [A-Za-z0-9_]. |
\W | Cualquier carácter que no sea alfanumérico. Equivalente a [^A-Za-z0-9_]. |
Cualquier letra en minuscula | [a-z] |
Entero | ^(?:\+|-)?\d+$ |
Correo electrónico | /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/ |
URL | ^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)( [a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$ |
Contraseña segura | (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$(Entre 8 y 10 caracteres, por lo menos un digito y un alfanumérico, y no puede contener caracteres espaciales) |
Fecha | ^\d{1,2}\/\d{1,2}\/\d{2,4}$(Por ejemplo 01/01/2007) |
Hora | ^(0[1-9]|1\d|2[0-3]):([0-5]\d):([0-5]\d)$(Por ejemplo 10:45:23) |
Número tarjeta de crédito | ^((67\d{2})|(4\d{3})|(5[1-5]\d{2})|(6011))(-?\s?\d{4}){3}|(3[4,7])\ d{2}-?\s?\d{6}-?\s?\d{5}$ |
Número teléfono | ^[0-9]{2,3}-? ?[0-9]{6,7}$ |
Código postal | ^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$ |
Certificado Identificación Fiscal | ^(X(-|\.)?0?\d{7}(-|\.)?[A-Z]|[A-Z](-|\.)?\d{7}(-|\.)? [0-9A-Z]|\d{8}(-|\.)?[A-Z])$ |
Valida sólo números del 1 al 12 (ideal para meses) | ^([0-1]?[0-2]|[0-9])$ |
Valida de 0.1 a 9.9 | ^([0-9].[1-9])$ |
Valida desde 10.01 hasta 99.99 con 2 decimales máximo | ^[0-9][0-9](.[0-9][0-9])$ |
Valida desde 0.01 hasta 99.99 con sólo 2 decimales máximo | ^[0-9]?[0-9](.[0-9][0-9])$ |
private void txtcodigo_KeyUp(object sender, KeyEventArgs e) { if (es_numero(txtcodigo)) { errorProvider1.SetError(txtcodigo, String.Empty); txtcodigo.BackColor = Color.Honeydew; } else { errorProvider1.SetError(txtcodigo, "Solo numeros"); txtcodigo.BackColor = Color.MistyRose; } } private void txtemail_KeyUp(object sender, KeyEventArgs e) { if (es_email(txtemail)) { errorProvider1.SetError(txtemail, String.Empty); txtemail.BackColor = Color.Honeydew; } else { errorProvider1.SetError(txtemail, "ejemplo@ejemplo.com"); txtemail.BackColor = Color.MistyRose; } } private void txtnombre_KeyUp(object sender, KeyEventArgs e) { if (es_cadena(txtnombre)) { errorProvider1.SetError(txtnombre, String.Empty); txtnombre.BackColor = Color.Honeydew; } else { errorProvider1.SetError(txtnombre, "Solo letras"); txtnombre.BackColor = Color.MistyRose; } } private void txttelf_KeyUp(object sender, KeyEventArgs e) { if (es_telefono(txttelf)) { errorProvider1.SetError(txttelf, String.Empty); txttelf.BackColor = Color.Honeydew; } else { errorProvider1.SetError(txttelf, "Formato: 999-9999"); txttelf.BackColor = Color.MistyRose; } } private void txtweb_KeyUp(object sender, KeyEventArgs e) { if (es_url(txtweb)) { errorProvider1.SetError(txtweb, String.Empty); txtweb.BackColor = Color.Honeydew; } else { errorProvider1.SetError(txtweb, "www.example.com"); txtweb.BackColor = Color.MistyRose; } } private void txtsueldo_KeyUp(object sender, KeyEventArgs e) { if (es_decimal(txtsueldo)) { errorProvider1.SetError(txtsueldo, String.Empty); txtsueldo.BackColor = Color.Honeydew; } else { errorProvider1.SetError(txtsueldo, "Formato: 00,00"); txtsueldo.BackColor = Color.MistyRose; } } private static bool es_numero(Control mitextbox) { Regex regex = new Regex(@"^[0-9]+$"); return regex.IsMatch(mitextbox.Text); } private static bool es_cadena(Control mitextbox) { Regex regex = new Regex(@"^[^ ][a-zA-Z ]+[^ ]$"); return regex.IsMatch(mitextbox.Text); } private static bool es_telefono(Control mitextbox) { Regex regex = new Regex(@"^([0-9]{3})[-. ]?([0-9]{4})$"); return regex.IsMatch(mitextbox.Text); } private static bool es_decimal(Control mitextbox) { Regex regex = new Regex(@"^[0-9]{1,9}([\.\,][0-9]{1,3})?$"); return regex.IsMatch(mitextbox.Text); } private static bool es_url(Control mitextbox) { Regex regex = new Regex(@"^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$"); return regex.IsMatch(mitextbox.Text); } private static bool es_email(Control mitextbox) { Regex regex = new Regex(@"^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" + @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,17}))$"); // Resultado: // Valid: david.jones@proseware.com // Valid: d.j@server1.proseware.com // Valid: jones@ms1.proseware.com // Invalid: j.@server1.proseware.com // Invalid: j@proseware.com9 // Valid: js#internal@proseware.com // Valid: j_9@[129.126.118.1] // Invalid: j..s@proseware.com // Invalid: js*@proseware.com // Invalid: js@proseware..com // Invalid: js@proseware.com9 // Valid: j.s@server1.proseware.com return regex.IsMatch(mitextbox.Text); }Este codigo va para el boton Nuevo
txtcodigo.Text = String.Empty; txtcodigo.BackColor = Color.White; errorProvider1.SetError(txtcodigo,String.Empty); txtnombre.Text = String.Empty; txtnombre.BackColor = Color.White; errorProvider1.SetError(txtnombre, String.Empty); txttelf.Text = String.Empty; txttelf.BackColor = Color.White; errorProvider1.SetError(txttelf, String.Empty); txtweb.Text = String.Empty; txtweb.BackColor = Color.White; errorProvider1.SetError(txtweb, String.Empty); txtemail.Text = String.Empty; txtemail.BackColor = Color.White; errorProvider1.SetError(txtemail, String.Empty); txtsueldo.Text = String.Empty; txtsueldo.BackColor = Color.White; errorProvider1.SetError(txtsueldo, String.Empty);y este codigo va en el boton Grabar
if (es_numero(txtcodigo) == true && es_cadena(txtnombre) == true && es_telefono(txttelf) == true && es_url(txtweb) == true && es_email(txtemail) == true && es_decimal(txtsueldo) == true) { MessageBox.Show("OK"); } else { MessageBox.Show("Complete todos los campos."); }
0 comentarios:
Publicar un comentario