Validate CURP

A simple and lightweight library to validate Mexican CURPs (Personal ID).

Install

NodeJS

Use NPM:

$ npm install --save validate-curp

Or YARN:

$ yarn add validate-curp

Browser

Add the script to your project:

<!-- Latest version -->
<script src="https://cdn.jsdelivr.net/gh/manuelmhtr/[email protected]/dist/index.js" type="text/javascript"></script>

<!-- Or specify a version -->
<script src="https://cdn.jsdelivr.net/gh/manuelmhtr/[email protected]/dist/index.js" type="text/javascript"></script>

<!-- This will export a global function "validateCurp": -->
<script type="text/javascript">
  var data = validateCurp('motr930411hjcrmn03');
  console.log(data);
</script>

API

The library only exposes a single function (.validateCurp).

.validateCurp(curp)

Checks whether a string is a valid CURP and returns validation details.

Parameters

Parameter Type Description
curp String The CURP to be validated.
options Object Settings (Optional).

Response

It returns a plain object with the values:

Parameter Type Description
isValid Boolean Indicates if the string is a valid CURP.
curp String The formatted CURP (uppercase, with no white spaces or symbols). Returns null when input is an invalid CURP.
errors Array[String] In case the CURP is invalid, the reasons why the CURP is invalid will be listed here.

Possible errors values and they description are:

Error DescripciĆ³n
INVALID_FORMAT The format is invalid, that means, the string does not meet with the required length or expected structure. Eg: XYZ because clearly is not an CURP.
INVALID_DATE The string may have the correct format, but digits generate an invalid date. Eg: MOTR935511HJCRMN03 because it refers to month 55.
INVALID_STATE The string may have the correct format, but letters for state don’t match with a valid one. Eg: MOTR9390411HXXRMN03 because it refers to state XX, which does not exist. See the valid states list here.
INVALID_CHECK_DIGIT The string has a valid format, but the last character (check digit) is invalid. Eg: MOTR930411HJCRMN09 ends with 9 but it is expected to end with 3.
FORBIDDEN_WORD The string contains one of the inconvenient words that cannot be included in a CURP. Eg: FETO930411HJCRMN03 the initials make the word FETO (fetus, LOL). Find the full list of words in this document.

Example

const validateCurp = require('validate-curp');

const response = validateCurp('motr930411hjcrmn03');
console.log(response);

/*
Prints:

{
  isValid: true,
  curp: 'MOTR930411HJCRMN03'
}

*/

const response = validateCurp('This is not a CURP');
console.log(response);

/*
Prints:

{
  isValid: false,
  curp: null,
  errors: ['INVALID_FORMAT']
}

*/

Tests

Run the test with the command:

$ yarn test

Related

  • validate-rfc
  • You need to check if an RFC is registered in SAT or is blacklisted? Try with Verifier.

Licencia

MIT

GitHub

View Github