Tip/Trick: Validar un DNI

Published 29/8/2007 17:42 | Eugenio Estrada

Esta es una función bastante útil, sirve para validar la letra de un DNI. Pasandole como parámetro el DNI completo, letra incluída.

        bool validarDNI(string dni)
        {
                if (new Regex("[0-9]{8}[A-Za-z]").Match(dni).Success)
		{
                    return ("TRWAGMYFPDXBNJZSQVHLCKE"[(int)long.Parse(dni.Substring(0, 8)) % 23].ToString() ==
                    dniMusic.ToString().ToUpper());
            	}
		else
		{
            	    return false;
		}
        }

Espero que os sea útil Wink

Archivado en: ,,
Comparte este post:

Comentarios

# O de sempre said on August 30, 2007 5:00 PM:

       bool validarDNI(string dni)

       {

               return (new Regex("[0-9]{8}[A-Za-z]").Match(dni).Success)?

                   ("TRWAGMYFPDXBNJZSQVHLCKE"[(int)long.Parse(dni.Substring(0, 8)) % 23].ToString() ==

                   dni.ToUpper()):false;

       }

# Johnny Venezuela said on March 25, 2008 3:22 AM:

private void dniMaskedTextBox_Validating(object sender, CancelEventArgs e)

       {

           string Letras = "TRWAGMYFPDXBNJZSQVHLCKE";

           int numNif;

           string nif = dniMaskedTextBox.Text;

           bool Valido = true;

           if (!System.Text.RegularExpressions.Regex.IsMatch(nif, @"^\d{8}[" + Letras + "]$"))

               Valido = false;

           else

           {

               numNif = Int32.Parse(nif.Substring(0, nif.Length - 1));

               if (!(nif[8] == Letras[numNif % 23]))

                   Valido = false;

           }

           if (!Valido)

           {

               e.Cancel = true;

               errorProvider1.SetError(dniMaskedTextBox, "La letra del DNI no es correcta");

           }

           else

           {

               e.Cancel = false;

               errorProvider1.SetError(dniMaskedTextBox, string.Empty);

           }

       }