Vamos
crear una expresión regular
para leer números de DNI y de NIE (extranjeros).
El
formato para el DNI es de la forma a la que estamos acostumbrados:
11223344-A.
Y el formato para el NIE es de la forma X-1223344-A,
donde el primer carácter pueden ser las detrás X, Y o Z.
El
guión separador es opcional.
Formato para extranjeros:
[X-Z]{1}
: Así acepta solo una letra mayúscula de la X a la Z.
[-]?
: Así se permite introducir un guión opcional.
\d{7}
: Así se cogen siete dígitos cualesquiera.
[-]?
: Guión opcional.
[A-Z]{1}
: Así se coge la ultima letra, solo puede ser una.
Formato para españoles:
\d{8}
: Coger 8 dígitos.
[-]?
: Igual que antes.
[A-Z]{1}
: Como antes, coge la ultima letra mayúscula.
Luego la expresión regular para
aceptar NIE extranjeros es la siguiente:
([X-Z]{1})([-]?)(\d{7})([-]?)([A-Z]{1})
Y la expresión regular para aceptar
DNI españoles es esta:
(\d{8})([-]?)([A-Z]{1})
Para terminar lo ideal es tener una
expresión regular que permita coger tanto DNI de españoles como de
extranjeros, luego hay que concatenar ambas expresiones para formar
una expresión mas potente. El resultado es este:
(([X-Z]{1})([-]?)(\d{7})([-]?)([A-Z]{1}))|((\d{8})([-]?)([A-Z]{1}))
Crystal clear which is not often the case of this kind of ressources! many thanks.
ResponderEliminarLyonel thank you very much that's what we try to achieve in computersandprogrammes.
ResponderEliminarMuchas gracias por la información. Muy útil!!
ResponderEliminarBuenas tardes muchas gracias por la información, sin embargo quisiera saber si existe una expresión para limitar solo el registro de 18 caracteres y que cuando se pase por ejemplo a 19 marque error con el codigo (\d{8})([-]?)([A-Z]{1}) muchas gracias por su atención.
ResponderEliminarGenial!!!
ResponderEliminarPara aceptar mayusculas y/o minusculas, esto seria correcto?
ResponderEliminar(([X-Zx-z]{1})([-]?)(\d{7})([-]?)([A-Za-z]{1}))|((\d{8})([-]?)([A-Za-z]{1}))
¡Gracias!
ResponderEliminar