Rexact
Cheatsheet

Regex numéro de carte d'identité de Hong Kong (HKID)

Un numéro HKID s'écrit X123456(A) : une ou deux lettres, six chiffres et une clé, un chiffre ou « A », en général entre parenthèses (celles-ci ne font pas partie du numéro et servent à faciliter le traitement informatique, d'après Wikipédia). La clé est un modulo 11 sur les caractères pondérés de 9 à 2 (A à Z valent 10 à 35, un numéro à une lettre est précédé d'un espace). Les trois motifs relus ici traitent différemment les parenthèses : validator.js accepte aussi les crochets, le paquet hkid met l'entrée en majuscules avant sa regex, et validid n'accepte que la forme sans parenthèses. Voici un motif qui accepte les deux écritures usuelles, comparé à ces tentatives.

/^[A-Z]{1,2}[0-9]{6}(?:[0-9A]|\([0-9A]\))$/
passe 24/24 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^[A-Z]{1,2}[0-9]{6}(?:[0-9A]|\\([0-9A]\\))$", "");
re.test(input);

Limites

  • Valide seulement la FORME : ne calcule pas la clé modulo 11. « A123456(4) » a la bonne forme mais une clé fausse et passe ; le calcul se fait dans le code.
  • Source de l'algorithme et du format : secondaire (Wikipédia, bibliothèque Perl, implémentations). Je n'ai pas ouvert de document de l'Immigration Department ; vérifiez sur des numéros réels de votre domaine avant de durcir.
  • N'importe quelle lettre est acceptée en tête, alors que Wikipédia indique qu'aucun numéro à une lettre ne commence par I, O, Q, U ou X en 2023 ; le sens des lettres initiales (période, bureau) n'est pas contrôlé. Majuscules seulement, parenthèses facultatives mais appariées.
  • N'établit pas qu'une carte a été délivrée. Un HKID est une donnée personnelle : n'utilisez que des numéros synthétiques à clé calculée.

Pages liées