sl-nic-parser
v1.0.1
Published
Lightweight Sri Lankan NIC parser - extract date of birth, gender, and age
Maintainers
Readme
sl-nic-parser
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+).
Install
npm install sl-nic-parserUsage
import { 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");API
parseNIC(nic: string): NICResult
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.
validateNIC(nic: string): boolean
Returns true if the string is a valid Sri Lankan NIC format, false otherwise.
NIC Format Reference
| 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)
License
MIT
