@krizad/thai-id-helper
v1.0.0
Published
A comprehensive utility kit for validating, formatting, masking, and extracting information from Thai National ID cards.
Maintainers
Readme
@krizad/thai-id-helper
ชุดเครื่องมือ (Utility Kit) แบบครบวงจรสำหรับจัดการเลขประจำตัวประชาชนไทย รองรับการตรวจสอบความถูกต้อง (Validation), การจัดรูปแบบ (Formatting), การเซ็นเซอร์ข้อมูล (Masking สำหรับ PDPA), การสุ่มเลขสำหรับการทดสอบ (Mocking) และการดึงข้อมูลเชิงลึกจากเลขบัตร
🚀 Live Demo: https://krizad.github.io/thai-id-helper-demo/
📦 การติดตั้ง (Installation)
สามารถติดตั้งผ่าน Package Manager ที่คุณใช้งาน:
npm install @krizad/thai-id-helper
# หรือ
yarn add @krizad/thai-id-helper
# หรือ
pnpm add @krizad/thai-id-helper📝 ความหมายของเลขบัตรประจำตัวประชาชน 13 หลัก
เลขบัตรประจำตัวประชาชนไทย 13 หลัก มีความหมายซ่อนอยู่ แบ่งออกเป็น 5 ส่วนดังนี้ (รูปแบบ X-XXXX-XXXXX-XX-X):
เลขบัตรประชาชนหลักที่ 1
เลขหลักนี้หมายถึงประเภทบุคคลค่ะ ซึ่งประเภทบุคคลแบ่งเป็น 8 ประเภทด้วยกัน มาดูกันค่ะว่ามีอะไรบ้าง
- เลข 1 : คือคนที่เกิดและมีสัญชาติเป็นคนไทย และแจ้งเกิดภายในกำหนดเวลา คือภายใน 15 วันนับแต่เกิดตามที่กฎหมายกำหนด
- เลข 2 : คือคนที่เกิดและมีสัญชาติไทย แต่แจ้งเกิดเกินกำหนดเวลาที่กำหนด คือไม่ได้แจ้งเกิดภายใน 15 วันนับแต่เกิดตามที่กฎหมายกำหนด
- เลข 3 : คือคนไทยและคนต่างด้าวที่มีใบสำคัญประจำตัวคนต่างด้าว และมีชื่อในทะเบียนบ้านสมัยเริ่มแรก
- เลข 4 : คือคนไทยและคนต่างด้าวที่มีใบสำคัญต่างด้าว แต่แจ้งย้ายเข้าโดยยังไม่มีเลขประจำตัวประชาชนตั้งแต่เริ่มแรก
- เลข 5 : คือคนไทยที่ได้รับอนุมัติให้เพิ่มชื่อเข้าไปในทะเบียนบ้านจากการตกสำรวจ หรือเป็นกรณีที่มี 2 สัญชาติ
- เลข 6 : คือคนที่ไม่ได้เข้าเมืองมาตามกฎหมาย หรือคนที่เข้าเมืองมาตามกฎหมายก็จริงแต่ยังไม่ได้สัญชาติไทยหรืออยู่ในลักษณะชั่วคราว
- เลข 7 : คือบุตรของบุคคลประเภทที่ 6 ที่เกิดในประเทศไทย
- เลข 8 : คือคนต่างด้าวที่อาศัยอยู่ในประเทศไทยอย่างถูกต้องตามกฎหมาย คนที่ได้รับใบสำคัญประจำตัวคนต่างด้าวหรือได้รับการแปลงสัญชาติเป็นสัญชาติไทยแล้ว
เลขบัตรประชาชนหลักที่ 2 - 5
ตัวเลขหลักนี้บนบัตรประชาชนหมายถึงรหัสของสำนักทะเบียนที่ออกเลขประจำตัวประชาชนให้ค่ะ
- เลขหลักที่ 2 : แสดงรหัสเขตการปกครองที่มีตั้งแต่ 1-9 ภาค
- เลขหลักที่ 3 : หมายถึงจังหวัดที่อยู่ในภาคนั้น ๆ อีกที
- เลขหลักที่ 4-5 : หมายถึงเขตหรืออำเภอในจังหวัดนั้น ๆ โดยเลขจะเริ่มตั้งแต่ 01 ไล่ลงไป ส่วนถ้าเป็นเขตเทศบาลจะไล่ตั้งแต่เลข 99 ย้อนลงมา
เลขบัตรประชาชนหลักที่ 6 - 10
ตัวเลขหลักนี้บ่งบอกถึงกลุ่มของบุคคลแต่ประเภท โดยสำนักงานทะเบียนจะจัดกลุ่มเรียงไปตามลำดับ หรือถ้าเป็นเด็กเกิดใหม่จะหมายถึงเลขประจำตัวในเล่มที่ของสูติบัตรตามที่ใบแจ้งเกิดที่อำเภอออกให้ คือเลขประจำตัวในทะเบียนบ้านนั่นแหละค่ะ
เลขบัตรประชาชนหลักที่ 11 - 12
เลขบัตรประชาชนหลักนี้หมายถึงลำดับที่ของบุคคลในแต่ละกลุ่มประเภท ซึ่งเป็นการจัดลำดับว่าคุณเป็นคนที่เท่าไหร่ในกลุ่มของบุคคลนั้น ๆ อีกทีค่ะ
เลขบัตรประชาชนหลักที่ 13
ส่วนเลขบัตรประชาชนหลักที่ 13 นี้จะเป็นตัวเลขที่ตรวจสอบความถูกต้องของเลขบัตรประชาชนทั้ง 12 หลักก่อนหน้า โดยตัวเลขหลักที่ 13 จะมาจากการคำนวณโดยใช้หลักการเลขคณิตโมดูลาร์ อ่านต่อได้ที่ https://www.wongnai.com/articles/meaning-of-id-card-number?ref=ct
🚀 ความสามารถ (Features)
- ตรวจสอบความถูกต้อง (Validate): ตรวจสอบว่าเลขบัตรประชาชนถูกต้องตามหลักคณิตศาสตร์ (Check Digit) หรือไม่
- จัดรูปแบบ (Format): เติมเครื่องหมายขีด (-) คั่นให้อ่านง่าย เช่น
1-1001-00123-45-6 - เซ็นเซอร์ข้อมูล (Masking): ปิดบังตัวเลขบางส่วนเพื่อความปลอดภัยและปฏิบัติตามกฎหมาย PDPA เช่น
1-1001-XXXXX-XX-6 - สุ่มเลขทดสอบ (Generator): สร้างเลขบัตรประชาชนจำลองที่ถูกต้องตามหลักคณิตศาสตร์ สำหรับใช้ในการทดสอบระบบ
- ดึงข้อมูล (Extractor): แกะข้อมูลจากเลขบัตร เช่น ประเภทบุคคล, รหัสจังหวัดที่แจ้งเกิด, และรหัสอำเภอ
📖 วิธีการใช้งาน (Usage & Examples)
1. การตรวจสอบเลขบัตรประชาชน (validateThaiID)
ฟังก์ชันนี้จะคืนค่าเป็น boolean (true ถ้าเลขถูกต้อง, false ถ้าไม่ถูกต้อง)
import { validateThaiID } from '@krizad/thai-id-helper';
const isValid1 = validateThaiID('1100100123456');
console.log(isValid1); // true หรือ false ขึ้นอยู่กับเลข
const isValid2 = validateThaiID('1-1001-00123-45-6'); // รองรับรูปแบบที่มีขีดคั่นด้วย
console.log(isValid2); // true หรือ false2. การจัดรูปแบบเลขบัตรประชาชน (formatThaiID)
ฟังก์ชันนี้จะรับเลข 13 หลัก (มีขีดหรือไม่มีก็ได้) แล้วคืนค่าเป็นสตริงที่มีขีดคั่นในรูปแบบที่ถูกต้อง
import { formatThaiID } from '@krizad/thai-id-helper';
const formatted = formatThaiID('1100100123456');
console.log(formatted); // '1-1001-00123-45-6'3. การเซ็นเซอร์เลขบัตรประชาชน (maskThaiID)
เพื่อป้องกันข้อมูลส่วนบุคคลหลุดรอดและรองรับ PDPA ฟังก์ชันนี้จะเซ็นเซอร์เลข 7 หลักตรงกลาง
import { maskThaiID } from '@krizad/thai-id-helper';
const masked = maskThaiID('1100100123456');
console.log(masked); // '1-1001-XXXXX-XX-6'4. การสุ่มเลขบัตรประชาชนจำลอง (generateMockThaiID)
มีประโยชน์มากสำหรับการเขียน Automated Tests หรือ Mock Data
import { generateMockThaiID } from '@krizad/thai-id-helper';
const mockId = generateMockThaiID();
console.log(mockId); // เช่น '3849175320185' (รับประกันว่าเป็นเลขที่ validate ผ่านแน่นอน)5. การดึงข้อมูลเชิงลึกจากเลขบัตรประชาชน (extractThaiIDInfo)
ฟังก์ชันนี้ช่วยแกะข้อมูลที่ซ่อนอยู่ในเลข 13 หลัก คืนค่าออกมาเป็น Object พร้อมคำอธิบาย
import { extractThaiIDInfo } from '@krizad/thai-id-helper';
const info = extractThaiIDInfo('1100100123456');
console.log(info);
/* Output:
{
isValid: true,
personType: 'คนที่เกิดและมีสัญชาติเป็นคนไทย และแจ้งเกิดภายในกำหนดเวลา',
provinceCode: '10',
districtCode: '01',
birthCertificateBookNo: '00123',
sequenceNo: '45',
checkDigit: '6'
}
*/📄 ใบอนุญาต (License)
MIT License
