Esta
Expresión Regular es para reconocer las matriculas de los coches.
Como hoy en día hay tanto matriculas antiguas como nuevas (formato
europeo), tenemos que hacer una expresión que acepte los dos
formatos, respectivamente MU1111AB y E1111ABC. Y no
están permitidos los guiones separadores ni espacios en blanco.
Formato
antiguo
([A-Z]{1,2})
: Así se cogen letras mayúsculas de la A a la Z, como mínimo puede
ser una letra, como máximo pueden ser dos letras.
(\d{4})
: Para coger cuatro dígitos, tienen que ser cuatro, ni uno mas ni
uno menos.
([A-Z]{0,2})
: Coger de cero a dos letras mayúsculas, es decir el mínimo es cero
y el máximo es dos.
Formato
Europeo
(E)
: Con E indicamos que forzosamente tiene que haber una y solo una E.
(\d{4})
: Igual que antes, para coger cuatro dígitos.
([A-Z]{3})
: Para coger tres letras mayúsculas, ni una mas ni una menos.
Luego
tenemos dos expresiones regulares, una para el formato antiguo y otra
para el formato Europeo. Ambas son de la siguiente forma.
Formato
antiguo: ([A-Z]{1,2})(\d{4})([A-Z]{0,2})
Formato
Europeo: (E)(\d{4})([A-Z]{3})
Para
terminar, haciendo una concatenación de ambas podemos aceptar los
dos formatos sin problemas.
Una
concatenación se hace así: R1|R2
Luego
el resultado de la concatenación de las dos expresiones regulares es
el siguiente:
(([A-Z]{1,2})(\d{4})([A-Z]{0,2}))|((E)(\d{4})([A-Z]{3})
En lugar de concatenar, ¿No será mejor resumir la expresión de la siguiente forma?: ^([A-Z]{1,2})?\d{4}([A-Z]{2,3})$
ResponderEliminarSi ;) @JOVICO
ResponderEliminarNo serían válidos. Esas expresiones aceptan matriculas como E2345V (formato europeo), pero tambien matrículas como E2345V34323debfibechibcid
ResponderEliminarMatrícula nueva mejorada: (?i)^\d{4}?[ -]*([A-Z]{3})$
ResponderEliminarMatricula antigua mejorada: (?i)^([A-Z]{1,2})?[ -]*\d{4}?[ -]*([A-Z]{1,2})$