south-africa-national-id-validation
Version:
Checks the South Africa National ID input is valid and allows you to return specific error messages
52 lines (38 loc) β’ 2.21 kB
Markdown
# πΏπ¦ South Africa National ID Validation
[](https://www.npmjs.com/package/south-africa-national-id-validation) [](https://www.npmjs.com/package/south-africa-national-id-validation) [](https://travis-ci.org/ClearScore/south-africa-national-id-validation) [](https://coveralls.io/github/ClearScore/south-africa-national-id-validation?branch=master) [](https://github.com/ClearScore/south-africa-national-id-validation/blob/master/LICENSE)
Checks the National ID input:
* is valid (regex)
* correct format
* correct citizenship
* correct number of digits
* not blank
* passes checksum
* has a correct date
* is above a minimum age (optional)
## Usage
Grab from NPM / Yarn
```bash
npm i south-africa-national-id-validation
```
```bash
yarn add south-africa-national-id-validation
```
```js
import verifyNationalIdNumber from 'south-africa-national-id-validation'
verifyNationalIdNumber({
number //(string) the number to check
minAge //(number) minimum allowed age
errorMessages: {
format //(string) error to display when format check fails
date //(string) error to display when date check fails
age //(string) error to display when age check fails
checksum //(string) error to display when checksum check fails
}
})
```
Check out [the tests](index.test.js) for specific use case examples
---
Based off the [westercape docs](https://www.westerncape.gov.za/general-publication/decoding-your-south-african-id-number-0)
Inspired by [valid-south-african-id](https://github.com/tiaanduplessis/valid-south-african-id)
### TODO
- Consider using [date-fns/toDate](https://date-fns.org/v2.0.0-alpha.33/docs/toDate) helper for date validation once 2.0 is released