A lightweight, zero-dependency TypeScript package to parse Sri Lankan National Identity Card (NIC) numbers and extract date of birth, gender, and age.
Supports both the old format (pre-2016) and the new format (2016+).
npm install sl-nic-parserimport { parseNIC, validateNIC } from "sl-nic-parser";
// Parse a NIC number
const result = parseNIC("952632567V");
console.log(result);
// {
// birthDate: Date(1995-09-20),
// gender: "male",
// age: 30,
// nicType: "old"
// }
// Validate a NIC number
validateNIC("952632567V"); // true
validateNIC("199526300123"); // true
validateNIC("invalid"); // falseWorks with CommonJS too:
const { parseNIC, validateNIC } = require("sl-nic-parser");Parses a Sri Lankan NIC number and returns structured data.
| Field | Type | Description |
|---|---|---|
birthDate |
Date |
Date of birth |
gender |
"male" | "female" |
Gender derived from day-of-year |
age |
number |
Current age in years |
nicType |
"old" | "new" |
Format type — old (10-char) or new (12-digit) |
Throws Error("Invalid NIC number") if the input is not a valid NIC.
Returns true if the string is a valid Sri Lankan NIC format, false otherwise.
| Format | Length | Pattern | Example |
|---|---|---|---|
| Old (pre-2016) | 10 chars | YYDDDDSSSV |
952632567V |
| New (2016+) | 12 digits | YYYYDDDDSSSC |
199526300123 |
- YY / YYYY — birth year (2-digit for old, 4-digit for new)
- DDD / DDDD — day of year (3 digits old, 4 digits new). For females, 500 is added.
- SSS / SSSC — serial number (and check digit for new format)
- V / X — check letter for old format (V or X)
MIT