Validar un campo de matrícula de vehículo o un dni en c#

publicado por: Anonymous

Hola estoy intentando crear campos en C# de forma que puedan sean validados, uno de ellos es la matrícula de un vehículo con el siguiente formato 0000 AAA. Esto es, 4 dígitos, un espacio, y tres letras en mayúscula.

El otro sería un ID empleado que empieza siempre con la letra V y le siguen los dígitos (sólo los números) del dni.

Mas allá de insertar un MaskTextBox y darle una máscara no sé cómo hacer esto, mi conocimiento es muy limitado, y agradecería cualquier ejemplo (no busco que nadie me haga el trabajo, con un ejemplo me vale).
¡Gracias!

solución

Hay diversas formas de hacerlo pero la más correcta en mi opinión es con expresiones regulares. Te recomendaría que te vieras algo de ello en este enlace que te dejo por aquí (https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expressions) de un ejemplo en C# y que puede ser aplicable a cualquier lenguaje de programación. De hecho aquí te muestro un ejemplo de una actividad en mis inicios de mi formación en programación web en JavaScript pero que funciona exactamente igual en C#.

Se trata de un método que comprueba si una cadena de caracteres cumple con la regla de que se trate de 8 dígitos y una letra o una letra (X, Y, Z), 7 dígitos y otra letra, como un DNI:

function checkMyForm() {
    /*Campo donde obtengo mi valor*/
    let dni = document.getElementById("dniField").value;
    /**
     *  Expresión regular que determina que:
     *            1º) 1 caracter que puede ser numero o letra incluy. minusculas y mayusculas  --> [d|(x-zX-Z)]
     *            2º) 7 dígitos --> d{7}
     *            3º) 1 letra incluy. minusculas y mayusculas --> [a-zA-Z]
     *
     *  Por último resaltar que /^ indica donde empieza la exp. regular y $/ 
     *  lo que determina su fin.
    **/                           
    let regExp = /^[d|(x-zX-Z)]d{7}[a-zA-Z]$/;

   //Con este método es suficiente para comprobarlo (regExp.test())
    if (regExp.test(dni)) {
        result.innerHTML = "Everything ok!!";
    } else {
        result.innerHTML = "Wrong format, try again!!";
    }

    /**
     * Por si como fue en mi caso, cumple con la expresion regular
     * pero le faltan caracteres se rellena a 0 sólo a la izquierda de la
     * cadena de caracteres de la variable 'dni'
    **/
    if (dni.length != 0 && dni.length < 10) {
        if (!/d{7}|d{8}/.test(dni)) {
            do {
                dni = "0" + dni
            } while (dni.length != 9);
        }


    } else {
        result.innerHTML = "Is not all filled properly, try again!!";
    }
    result.innerHTML += " " + dni;
}

Si te sirvió la ayuda o necesitas algo más de información acerca de ello por favor házmelo saber.
Un saludo.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *