A Go library for validating Taiwan identification numbers, including National IDs and various resident certificate formats.
This project is ported from taiwan-id-validator.
- Validates Taiwan National ID numbers
- Validates old format resident certificates
- Validates new format resident certificates (foreign/stateless, HK/Macao, mainland China)
- Configurable validation options
- Extracts detailed information (region, gender, ID type, etc.)
- Case-insensitive validation
go get github.com/ddzero2c/twid
package main
import (
"fmt"
"github.com/ddzero2c/twid"
)
func main() {
// Simple validation
if twid.IsValid("A123456789") {
fmt.Println("Valid Taiwan ID")
}
}
validator := twid.NewValidator(twid.DefaultValidationOptions())
info, err := validator.Parse("A123456789")
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
fmt.Printf("Region: %s\n", info.Region)
fmt.Printf("Gender: %s\n", info.Gender)
fmt.Printf("Type: %s\n", info.Type)
fmt.Printf("Is Foreigner: %t\n", info.IsForeigner)
fmt.Printf("Serial Number: %s\n", info.SerialNo)
fmt.Printf("Checksum: %d\n", info.Checksum)
fmt.Printf("Is Valid: %t\n", info.IsValid)
options := twid.ValidationOptions{
NationalID: true,
OldResidentCertificate: false,
// Other options set to false
}
validator := twid.NewValidator(options)
- National ID: Taiwan citizen identification numbers (e.g., A123456789)
- Old Resident Certificate: Legacy format for foreign residents (e.g., AA00000009)
- New Foreign/Stateless: New format for foreign or stateless residents (e.g., A800000014)
- New Stateless Resident: New format for stateless residents (e.g., A870000015)
- New HK/Macao Resident: New format for Hong Kong/Macao residents (e.g., A880000018)
- New Mainland China Resident: New format for mainland China residents (e.g., A890000011)
go test
This project maintains the same license as the original taiwan-id-validator project.
Ported from the JavaScript library taiwan-id-validator by enylin.