Para conseguir un patrón con expresión regular para HTML5 que permita filtrar los NIFs españoles formados por 8 dígitos más una letra y los NIFs o números de extranjería formados por una letra 8 dígitos y una letra, se puede utilizar en la directiva pattern la siguiente expresión regular que funciona a la perfección.
Este es el patrón para el NIF (([X-Z]{1})([-]?)(\d{7})([-]?)([A-Z]{1}))|((\d{8})([-]?)([A-Z]{1}))
<input type="text" placeholder="DNI" class="form-control" size="10" maxlength="9" name="nif" pattern="(([X-Z]{1})([-]?)(\d{7})([-]?)([A-Z]{1}))|((\d{8})([-]?)([A-Z]{1}))" title="Introduzca el dni" value="<?php echo $row['NIF'];?>" required>
como puedo validar un DNI cubano, ayudeme quien pueda, saludos
Una pregunta, el dni cubano son 11 dígitos del 0 al 9 no es así?
Buenos días a todos. Para preguntar si se puede definir un pattern para el DNI o NIE que además de determinar los números y letras y su posición, permita verificar que la letra colocada sea la correcta, porque, por ejemplo, para el DNI nº 12345678 la letra correcta es la Z, que en PHP se define algo así parecido: letracorrecta=numeros%23. Pero como puedo insertar esto en la expresión anterior? Gracias por la pronta respuesta que le den al presente.
Entiendo que esto en un patrón con expresiones regulares no se podrá hacer, deberá hacerse una verificación el dni o nie con una función de javascript (https://donnierock.com/2011/11/05/validar-un-dni-con-javascript/) y que se llame desde un evento en el campo del formulario cuando se desee, o on click o al salir del campo, perder el foco,…