Regex LEI (Legal Entity Identifier)
Un LEI, ce n'est pas juste « 4 chiffres + 00 + 12 caractères + 2 chiffres » : une croyance répandue veut que les positions 5-6 soient toujours « 00 », mais ce n'est vrai que par convention historique — le LEI réel d'Apple (HWUPKR0MPOU8FGXBT394) a « KR » à cette position, celui de Microsoft « EJ ». Une regex GeeksforGeeks qui impose ce « 00 » en dur rejetterait donc les LEI de ces deux entreprises pourtant bien réelles et actives, vérifié directement sur l'API officielle GLEIF. Voici un motif qui ne fait pas cette hypothèse, comparé à cette tentative et deux autres.
/^[A-Z0-9]{18}[0-9]{2}$/passe 20/20 cas
Comparatif des patterns existants
Implémentation
const re = new RegExp("^[A-Z0-9]{18}[0-9]{2}$", "");
re.test(input);Limites
- Valide seulement la FORME (20 caractères alphanumériques majuscules) : ne calcule pas les 2 chiffres de contrôle ISO 7064 MOD 97-10 — un LEI syntaxiquement valide selon ce motif peut avoir une clé fausse et ne correspondre à aucune entité réellement enregistrée (voir HWUPKR0MPOU8FGXBT395 dans les exemples, structure correcte mais clé fausse).
- Ne consulte pas l'API officielle GLEIF (api.gleif.org) : seule cette source confirme qu'un LEI est réellement attribué, actif, et à quelle entité.
- Ne fait aucune hypothèse sur les positions 5-6 (souvent « 00 » par convention historique, mais pas toujours — les LEI d'Apple et de Microsoft en sont la preuve directe) : contrairement à plusieurs tentatives comparées ici qui codent cette hypothèse en dur.
- N'accepte que les caractères ASCII majuscules et chiffres : un tiret cadratin ou tout autre caractère Unicode visuellement proche d'un caractère valide est rejeté, une confusion réelle rencontrée dans au moins une tentative trouvée en ligne.