indian_id_validator 1.0.2
indian_id_validator: ^1.0.2 copied to clipboard
A Dart package to validate Indian ID numbers (Aadhaar, PAN, Passport, Voter ID, Driving Licence, GSTIN, IFSC, etc.)
πͺͺ Indian ID Validator #
A lightweight Dart package to validate Indian ID numbers such as Aadhaar, PAN, Passport, Voter ID, Driving Licence, GSTIN, IFSC, Ration Card, and Bank Card (credit/debit).
β¨ Features #
- Aadhaar β 12-digit number with Verhoeff checksum validation
- PAN β Standard 10-character alphanumeric format
- Passport β 1 letter + 7 digits
- Voter ID β 3 letters + 7 digits
- Driving Licence β Generic nationwide pattern (e.g.,
MH1420110012345) - GSTIN β 15 characters (e.g.,
22ABCDE1234F1Z5) - IFSC β
XXXX0YYYYYYpattern (e.g.,SBIN0001234) - Bank Card β 13β19 digits passing the Luhn check
- Ration Card β Simplified 9β12 alphanumeric
π¦ Installation #
Add this to your pubspec.yaml:
dependencies:
indian_id_validator: ^1.0.2
π Quick start #
import 'package:indian_id_validator/indian_id_validator.dart';
void main() {
final pan = IndianIdValidator.validate('ABCDE1234F', IdType.PAN);
print(pan.isValid); // true
final aadhaar = IndianIdValidator.validate('1234 1234 1234', IdType.AADHAAR);
print(aadhaar.message); // e.g., "Invalid Aadhaar checksum." or "Valid Aadhaar."
}
π§ Whatβs validated? #
- Aadhaar β 12 digits with Verhoeff checksum
- PAN β 5 letters + 4 digits + 1 letter (e.g.,
ABCDE1234F) - Passport β 1 letter + 7 digits (e.g.,
A1234567) - Voter ID β 3 letters + 7 digits (e.g.,
ABC1234567) - Driving Licence β Generic nationwide pattern (e.g.,
MH1420110012345) - GSTIN β 15 characters (e.g.,
22ABCDE1234F1Z5) - IFSC β
XXXX0YYYYYYpattern (e.g.,SBIN0001234) - Bank Card β 13β19 digits passing the Luhn check
- Ration Card β Simplified 9β12 alphanumeric
Inputs are normalized automatically: spaces/hyphens are removed and letters uppercased.
π API overview #
enum IdType { AADHAAR, PAN, PASSPORT, VOTER_ID, DRIVING_LICENSE, GSTIN, RATION_CARD, BANK_IFSC, BANK_CARD }
class ValidationResult {
final bool isValid; // Whether the input is valid
final String message; // Reason for validity/invalidity
final String expectedFormat; // Human-friendly format guidance
}
// Main entrypoint
ValidationResult IndianIdValidator.validate(String input, IdType type)
βοΈ Examples #
// PAN
final pan = IndianIdValidator.validate('ABCDE1234F', IdType.PAN);
// Aadhaar
final aadhaar = IndianIdValidator.validate('1234-1234-1234', IdType.AADHAAR);
// IFSC
final ifsc = IndianIdValidator.validate('SBIN0001234', IdType.BANK_IFSC);
// Bank Card (Luhn)
final card = IndianIdValidator.validate('4539578763621486', IdType.BANK_CARD);
βοΈ Notes #
- Patterns are derived from official or widely accepted formats; some IDs (e.g., Driving Licence, Ration Card) vary by state. The implementation uses generic patterns and may not cover every regional edge-case.
- Aadhaar checksum uses the Verhoeff algorithm; Bank card validation uses the Luhn algorithm.
- This package performs client-side format checks only; it doesnβt query any government or bank database.
π§ͺ Testing #
This package ships with unit tests. Run them with:
dart test
π Links #
- Pub: https://pub.dev/packages/indian_id_validator
- Repository: https://github.com/Ap00rvx/indian_id_validator
π License #
MIT