Librería Java para análisis y validación de la CURP (Clave Única de Registro de Población) mexicana.
Migración a Java de la librería original CURPSuite creada por Jacob Sánchez Pérez en Python.
- 🔍 Validación completa de formato y estructura CURP
- 📅 Extracción de datos: fecha de nacimiento, sexo y entidad federativa
- ✅ Verificación de nombres contra la CURP
- 🚫 Detección de palabras altisonantes censuradas
- 📊 Salida JSON para integración fácil
- 🎯 Manejo de excepciones específicas
- 📱 CLI incluida para uso desde terminal
Agrega el repositorio JitPack y la dependencia a tu pom.xml:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.crisalex164</groupId>
<artifactId>CURPSuite</artifactId>
<version>v2.6.1</version>
</dependency>repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.crisalex164:CURPSuite:v2.6.1'
}import com.curpsuite.CURP;
import com.curpsuite.enums.Sexo;
public class EjemploCURP {
public static void main(String[] args) {
try {
// Crear instancia con CURP válida
CURP curp = new CURP("SABC560626MDFLRN01");
// Extraer información
System.out.println("Fecha de nacimiento: " + curp.getFechaNacimiento()); // 1956-06-26
System.out.println("Sexo: " + curp.getSexo()); // MUJER
System.out.println("Entidad: " + curp.getEntidad()); // DISTRITO FEDERAL
System.out.println("Código ISO: " + curp.getCodigoEntidad()); // MX-DIF
System.out.println("¿Extranjero?: " + curp.esExtranjero()); // false
} catch (CURPException e) {
System.err.println("CURP inválida: " + e.getMessage());
}
}
}// Validar CURP con nombre completo
CURP curp = new CURP("SABC560626MDFLRN01", "María Consuelo", "Sánchez", "Beltrán");
// Validar partes individuales
if (curp.nombreValido("CONSUELO")) {
System.out.println("✅ El nombre coincide con la CURP");
}
if (curp.primerApellidoValido("SANCHEZ")) {
System.out.println("✅ El primer apellido coincide");
}CURP curp = new CURP("SABC560626MDFLRN01");
String json = curp.toJson();
System.out.println(json);Salida:
{
"curp": "SABC560626MDFLRN01",
"fechaNacimiento": "1956-06-26",
"sexo": "MUJER",
"entidad": "DISTRITO FEDERAL",
"codigoEntidad": "MX-DIF",
"esExtranjero": false
}Compila con Maven y usa el JAR ejecutable:
mvn clean package
java -jar target/curpsuite-2.6.1-jar-with-dependencies.jar SABC560626MDFLRN01# Validar solo la CURP
java -jar curpsuite.jar SABC560626MDFLRN01
# Validar con nombre completo
java -jar curpsuite.jar SABC560626MDFLRN01 -c "María Consuelo Sánchez Beltrán"
# Validar por partes
java -jar curpsuite.jar SABC560626MDFLRN01 -n "CONSUELO" -p "SANCHEZ" -s "BELTRAN"Parámetros:
-n, --nombre: Nombre de pila-p, --primer-apellido: Primer apellido (paterno)-s, --segundo-apellido: Segundo apellido (materno)-c, --nombre-completo: Nombre completo
// Solo CURP
CURP curp = new CURP("SABC560626MDFLRN01");
// CURP con validación de nombres
CURP curp = new CURP("SABC560626MDFLRN01", "CONSUELO", "SANCHEZ", "BELTRAN", null);| Método | Descripción | Retorno |
|---|---|---|
getFechaNacimiento() |
Fecha de nacimiento extraída | LocalDate |
getSexo() |
Sexo de la persona | Sexo (enum) |
getEntidad() |
Entidad federativa de nacimiento | String |
getCodigoEntidad() |
Código ISO de la entidad | String |
esExtranjero() |
Si nació en el extranjero | boolean |
nombreValido(String) |
Valida el nombre contra la CURP | boolean |
primerApellidoValido(String) |
Valida primer apellido | boolean |
segundoApellidoValido(String) |
Valida segundo apellido | boolean |
toJson() |
Convierte a JSON | String |
La librería maneja excepciones específicas para diferentes tipos de errores:
try {
CURP curp = new CURP("INVALID_CURP");
} catch (CURPLengthException e) {
// CURP no tiene 18 caracteres
} catch (CURPVerificationException e) {
// Dígito verificador incorrecto
} catch (CURPDateException e) {
// Fecha inválida en la CURP
} catch (CURPSexException e) {
// Carácter de sexo inválido
} catch (CURPRegionException e) {
// Código de región inválido
} catch (CURPException e) {
// Error general de CURP
}| Python | Java |
|---|---|
snake_case |
camelCase |
datetime.date |
LocalDate |
json() |
toJson() |
| Diccionarios | Objetos/Maps |
Python:
from curpsuite import CURP
curp = CURP("SABC560626MDFLRN01")
print(curp.fecha_nacimiento)
print(curp.json())Java:
import com.curpsuite.CURP;
CURP curp = new CURP("SABC560626MDFLRN01");
System.out.println(curp.getFechaNacimiento());
System.out.println(curp.toJson());- Java 17+
- Maven 3.6+
git clone https://github.com/crisalex164/CURPSuite.git
cd CURPSuite
mvn clean compilemvn testmvn clean packageEste proyecto mantiene la licencia original GPL v2.0 - consulta el archivo LICENSE para más detalles.
- 🐍 Versión Python original: Jacob Sánchez Pérez - CURPSuite
- ☕ Migración a Java: crisalex164
¡Las contribuciones son bienvenidas! Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -am 'Agregar nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
- 🐛 Issues: GitHub Issues
- 📖 Documentación: JavaDoc generada
- 🔗 Versión Python original: jacobszpz/CURPSuite
Hecho con ❤️ para la comunidad de desarrolladores mexicanos
⭐ Si te resulta útil, ¡dale una estrella al repo!