miércoles, 27 de abril de 2022

Regex de RFC (México)

NOTA: Recuerden que si requieren ayuda con alguna Expresión regular, me pueden escribir y los apoyo sin problema.

Este post es para ayudar a los desarrolladores con las entradas de datos de RFC válidos cuando sean requeridos, en este caso la definición de RFC y forma de generarlo va hasta el final, primero las expresiones regulares (Que es lo que más nos importa).

Versión oficial del SAT

^[A-Z&Ñ]{3,4}[0-9]{2}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])[A-Z0-9]{2}[0-9A]$

Versión reducida de la versión oficial del SAT

^[A-Za-zñÑ&]{3,4}\d{6}\w{3}$

Versión siguiendo al pie de la letra las instrucciones del SAT, esta versión no permite la entrada de fechas incorrectas ni de años bisiestos erróneos , de igual manera impide un RFC con palabras altisonantes, el problema es que en la práctica, existen RFC con palabras altisonantes y con fechas mal formadas.

^(((?!(([CcKk][Aa][CcKkGg][AaOo])|([Bb][Uu][Ee][YyIi])|([Kk][Oo](([Gg][Ee])|([Jj][Oo])))|([Cc][Oo](([Gg][Ee])|([Jj][AaEeIiOo])))|([QqCcKk][Uu][Ll][Oo])|((([Ff][Ee])|([Jj][Oo])|([Pp][Uu]))[Tt][Oo])|([Rr][Uu][Ii][Nn])|([Gg][Uu][Ee][Yy])|((([Pp][Uu])|([Rr][Aa]))[Tt][Aa])|([Pp][Ee](([Dd][Oo])|([Dd][Aa])|([Nn][Ee])))|([Mm](([Aa][Mm][OoEe])|([Ee][Aa][SsRr])|([Ii][Oo][Nn])|([Uu][Ll][Aa])|([Ee][Oo][Nn])|([Oo][Cc][Oo])))))[A-Za-zñÑ&][aeiouAEIOUxX]?[A-Za-zñÑ&]{2}(((([02468][048])|([13579][26]))0229)|(\d{2})((02((0[1-9])|1\d|2[0-8]))|((((0[13456789])|1[012]))((0[1-9])|((1|2)\d)|30))|(((0[13578])|(1[02]))31)))[a-zA-Z1-9]{2}[\dAa])|([Xx][AaEe][Xx]{2}010101000))$

Versión de validación caracter por caracter, esta ER es recomendable cuando se quiera validar mientras el usario tipea

^[A-Za-zñÑ&]{1,2}([A-Za-zñÑ&]([A-Za-zñÑ&](\d(\d(\d(\d(\d(\d(\w(\w(\w)?)?)?)?)?)?)?)?)?)?)?$

El Registro Federal de Contribuyentes (RFC) se genera con 12 o 13 caracteres alfanuméricos obtenidos del nombre completo o razón social en mayúsculas sin acentos ni diéresis y la fecha de nacimiento de cada persona o creacíón de la empresa, para ello se siguen las instrucciones y excepciones a continuación:

Instrucciones

1.- Espacios 1 al 4 (1 al 3 en caso de empresa) La letra inicial y la primera vocal interna del primer apellido, la letra inicial del segundo apellido y la primera letra del nombre.

2.- 5 al 10 (4 al 9 en caso de empresa) La fecha de nacimiento en el orden de año mes y día. Para el año se tomarán los dos últimos dígitos, cuando el mes o el día sea menor a diez, se antepondrá un cero.

3.- 11 al 13 (10 al 12 en caso de empresa) La homoclave es un conjunto de tres caracteres asignados exclusivamente por el SAT con la finalidad de evitar la duplicidad en el RFC, y así mantener el registro sin claves que puedan generar confusión para identificar a los contribuyentes.

Excepciones

1.- Si la letra inicial de alguno de los apellidos es Ñ, el sistema le asignará una "X" en su lugar.

2.- Cuando el nombre sea compuesto (formado por dos o más palabras), la clave se constituye con la letra inicial de la primera palabra, siempre que no sea MARIA, MA., MA, o JOSE, J, J. en cuyo caso se utilizará la segunda palabra.

3.- Si en los apellidos o en el nombre aparecieran caracteres especiales como diagonal (/), guión (-), o punto (.), se captura tal cual viene en el documento probatorio y se asignará una "X" en caso de que esa posición intervenga para la conformación del RFC.

4.- Apellidos compuestos, formados por más de una palabra, el RFC se conformará con la primera palabra del apellido.

5.- Cuando alguno de los apellidos o nombre es compuesto y la primera palabra de esta composición es una preposición, conjunción, o contracción (DA, DAS, DE, DEL, DER, DI, DIE, DD, EL, LA, LOS, LAS, LE, LES, MAC, MC, VAN, VON, Y) se elimina la primera palabra y se utiliza la siguiente del apellido o nombre.

6.- Si de las cuatro letras resulta una palabra altisonante, la segunda letra será sustituida por una "X".

7.- Con dos apellidos, si el primer apellido no tiene vocal interna, se le asignará una "X" en la segunda posición.

8.- Con un apellido, si no existe el segundo apellido, se asignará una "X" en la tercera posición.

No hay comentarios:

Publicar un comentario