Herramientas para el manejo del RFC en el desarrollo web, estas actualmente consta 2.
El RFC es una clave que tiene toda Persona física en México que realice alguna actividad licita que este obligada a pagar impuestos o toda Persona moral sin excepción (contribuyentes):¬S
.
Esta clave se genera con 10 caracteres alfanuméricos obtenidos de los datos personales del contribuyente o persona física como su nombre y fecha de nacimiento; o nombre y fecha de origen de la persona moral.
Más los 4 dígitos se le conoce como homoclave, esta la designa el SAT, dependiendo de algunos factores que realiza el SAT, la regla de validación quedaría como.
Nota: Los caracteres deben de estar en mayúsculas sin acentos ni diéresis.
Y se determina de la siguiente manera:
Por ejemplo para el VECJ880326 XXXX
Los 4 primeros dígitos son:
De no existir algun apellido se utiliza una (X).
Por el momento una expresión de validación seria:
^[a-z]{4}
La siguiente parte le corresponde a la fecha de nacimiento la cual esta dividido en:
El 5° y 6° dígito corresponden al año de nacimiento(88).
[0-9]{2}
El 7° y 8° dígito corresponden al mes de nacimiento(03 ó marzo).
(1[0-2]|0[1-9])
El 9° y 10° dígito corresponden al día de nacimiento(26).
([0-3][0-9])
Los últimos 4 dígitos(XXXX) es la homoclave, la cual se puede validar como:
[a-z0-9]{4}
Finalmente la expresión de validación para una RFC con homoclave seria:
^[A-Z]{4}([0-9]{2})(1[0-2]|0[1-9])([0-3][0-9])([ -]?)([A-Z0-9]{4})$
<?php
/**
* Valida un RFC
*
* @param string $rfc a validar
* @return multiple int 1 si el $rfc es valido 0 si no. boolean FALSE si sucede un error.
* @link http://php.net/manual/en/function.preg-match.php
*/
function validarRFC($rfc)
$regex = '/^[A-Z]{4}([0-9]{2})(1[0-2]|0[1-9])([0-3][0-9])([ -]?)([A-Z0-9]{4})$/';
return preg_match($regex, $rfc);
}//fin función
/* probando la validacion */
if( validarRFC('VECJ880326 XXXX') ) {
echo 'RFC <b>VECJ880326 XXXX</b> Valido';
} else {
echo 'RFC <b>VECJ880326 XXXX</b> inValido';
}
Puedes correr el siguiente Ejemplo de prueba:
Uso:
$('#mi_rfc_input').RFC();
Nota: Este plugin esta pendiente.