nigeria-validator
v1.0.3
Published
Validate and format common Nigerian data: phone numbers, BVNs, bank codes, etc.
Maintainers
Readme
🇳🇬 nigeria-validator
A developer-friendly Node.js package for validating and formatting Nigerian data like phone numbers, BVNs, NINs, bank codes, states, and LGAs.
✨ Features
- 📞 Phone number validation & formatting (
+234or local) - 🏦 Bank code validation & name lookup
- 🆔 BVN validation (11-digit check)
- 🆔 NIN validation (11-digit national ID)
- 🏛️ Validate Nigerian states and LGAs
- 📡 Detect which telecom network a Nigerian phone number belongs to
- 🔁 Supports both local and international formats
📦 Installation
npm install nigeria-validator🔧 Usage
const ngv = require('nigeria-validator');
// ✅ Phone Numbers
ngv.isValidPhone("08034567890"); // true
ngv.formatPhone("+2348034567890"); // "08034567890"
ngv.formatPhone("08034567890", "intl"); // "+2348034567890"
// ✅ BVN
ngv.isValidBVN("22345678901"); // true
// ✅ NIN
ngv.isValidNIN("12345678901"); // true
// ✅ Bank Codes
ngv.isValidBankCode("057"); // true
ngv.getBankName("057"); // "Zenith Bank"
// ✅ States and LGAs
ngv.isValidState("Lagos"); // true
ngv.getLGAs("Abia"); // [ 'Aba North', 'Aba South', ... ]
ngv.isValidLGA("Abia", "Umuahia North"); // true
// ✅ Which Network
ngv.getNigerianNetwork("08034567890"); // "MTN"📘 API Reference
📞 Phone Numbers
| Function | Description |
|----------|-------------|
| isValidPhone(phone) | Validates Nigerian mobile numbers (MTN, Airtel, Glo, 9mobile, etc.) |
| formatPhone(phone, format) | Converts phone to 'local' (080...) or 'intl' (+234...) |
🆔 BVN
| Function | Description |
|----------|-------------|
| isValidBVN(bvn) | Validates a Bank Verification Number (must be 11 digits) |
🆔 NIN
| Function | Description |
|----------|-------------|
| isValidNIN(nin) | Validates a National Identification Number (11-digit check) |
🏦 Bank Codes
| Function | Description |
|----------|-------------|
| isValidBankCode(code) | Checks if a 3-digit bank code is valid |
| getBankName(code) | Returns the bank name (e.g., "058" → "GTBank") |
🏛️ States and LGAs
| Function | Description |
|----------|-------------|
| isValidState(state) | Returns true if the state exists |
| getLGAs(state) | Returns an array of LGAs for the state |
| isValidLGA(state, lga) | Returns true if LGA exists in the given state |
📡 Which Network
| Function | Description |
|----------|-------------|
| getNigerianNetwork(phone) | Detects if the phone number is MTN, Glo, Airtel, or 9mobile |
📂 Nigerian States Coverage
- ✅ Includes all 20 states and the FCT, covering 413+ Local Government Areas (LGAs).
- Example states: Abia, Adamawa, Akwa Ibom, Anambra, Bauchi, Bayelsa, ...
📜 Which Network Function
function getNigerianNetwork(phone) {
const cleaned = phone.replace(/\D/g, "");
let normalized = cleaned;
if (cleaned.startsWith("234")) {
normalized = "0" + cleaned.slice(3);
}
const prefix = normalized.slice(0, 4);
const mtnPrefixes = [
"0803", "0806", "0703", "0706", "0810", "0813", "0814", "0816",
"0903", "0906", "0913", "0916"
];
const gloPrefixes = ["0805", "0705", "0811", "0815", "0905", "0915"];
const airtelPrefixes = [
"0802", "0808", "0708", "0812", "0701", "0902", "0907", "0901", "0912"
];
const etisalatPrefixes = ["0809", "0817", "0818", "0909", "0908"];
if (mtnPrefixes.includes(prefix)) return "MTN";
if (gloPrefixes.includes(prefix)) return "Glo";
if (airtelPrefixes.includes(prefix)) return "Airtel";
if (etisalatPrefixes.includes(prefix)) return "9mobile";
return "Unknown Network";
}👨🏾💻 Author
Your Name
GitHub: @milytoh
📃 License
MIT License. Free to use, modify, and contribute.
🙌 Contributions
PRs and suggestions are welcome! 🇳🇬
Want to add full 36-state LGA support? Let’s do it together.
