Validar formato de patentes de autos en Chile con expresiones regulares
Esta expresión regular valida el formato antiguo y el nuevo de la patente de autos en Chile, ojo, sólo valida el formato. Usé como separador los caracteres . (punto), – (guión) ó un espacio.
Expresión regular
$patente = 'AB-12-34'; $regex = '/^[a-z]{2}[\.\- ]?[0-9]{2}[\.\- ]?[0-9]{2}|[b-d,f-h,j-l,p,r-t,v-z]{2}[\-\. ]?[b-d,f-h,j-l,p,r-t,v-z]{2}[\.\- ]?[0-9]{2}$/i'; if (preg_match($regex, $patente)) echo "Patente correcta"; else echo "Patente incorrecta";
Método para jQuery plugin Validation
$.validator.addMethod("patente", function(value, element) { return this.optional(element) || value.match(/^[a-z]{2}[\.\- ]?[0-9]{2}[\.\- ]?[0-9]{2}|[b-d,f-h,j-l,p,r-t,v-z]{2}[\-\. ]?[b-d,f-h,j-l,p,r-t,v-z]{2}[\.\- ]?[0-9]{2}$/i); }, "La patente ingresada no es valida.");
Validador patente symfony
<?php /* * Copyright (c) 2010 José Joaquín Núñez (josejnv@gmail.com) http://joaquinnunez.cl/ * Licensed under GPL (http://www.opensource.org/licenses/gpl-2.0.php) * Use only for non-commercial usage. * * Version : 0.1 */ /** * sfValidatorPatente validates patentes chilenas. * * @package symfony * @subpackage validator * @author José Joaquín Núñez <josejnv@gmail.com> */ class sfValidatorPatente extends sfValidatorRegex { const REGEX_PATENTE = '/^[a-z]{2}[\.\- ]?[0-9]{2}[\.\- ]?[0-9]{2}|[b-d,f-h,j-l,p,r-t,v-z]{2}[\-\. ]?[b-d,f-h,j-l,p,r-t,v-z]{2}[\.\- ]?[0-9]{2}$/i'; /** * @see sfValidatorRegex */ protected function configure($options = array(), $messages = array()) { parent::configure($options, $messages); $this->setOption('pattern', self::REGEX_PATENTE); } }
Saludos


11:17 am
December 20th, 2010
Brillante!! Gracias por compartir!!
7:00 pm
January 30th, 2012
tu validacion esta mala, acepta muchos formatos….
ingreso xd1315 y la acepta…
yo necesito que solo acepte validaciones de este tipo xd-1313
1:55 am
February 9th, 2012
Gracias! Hago la acotación de que en algunos lugares (por ejemplo Wikipedia, a la fecha) dice que se ocupan 18 letras en las nuevas patentes, omitiéndose entre otras la N y permitiéndose la W. En otros sitios dice que se permite la N y se omite la W por ser esta última demasiado ancha. Yo ante la duda agregué la N a la expresión (dado que no es fundamental para el formulario), pero otros podrían querer confirmar. Si encuentran una buena fuente, compártanla :)
Y Franco, la validación de formato no está mala, lo que pasa es que tú necesitas algo más estricto. En este regex los separadores (guión, espacio o punto) son opcionales. Para hacerlos obligatorios debes eliminar el ‘?’ que aparece a la derecha de los corchetes correspondientes.