Rexact
Cheatsheet

Regex Code personnel lituanien (asmens kodas)

L'asmens kodas a 11 chiffres : un chiffre de siècle et de sexe (1 à 6), l'année sur 2 chiffres, le mois (01-12), le jour (01-31), 3 chiffres de série et une clé modulo 11 identique à celle de l'Estonie (deux jeux de poids). La spécification DG TAXUD ne borne pas la série pour la Lituanie. validator.js réutilise pourtant la regex estonienne, qui limite la série à 001-710 : « 33309249990 », série 999, y est rejeté. django-localflavor se contente de « 11 chiffres ». Voici un motif qui borne siècle, mois et jour sans limiter la série, comparé à ces tentatives ; la clé et l'existence du jour restent à vérifier par du code.

/^[1-6]\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{4}$/
passe 21/21 cas

Comparatif des patterns existants

Implémentation

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

Limites

  • Valide la forme (siècle, mois, jour) mais PAS la clé modulo 11 : « 33309240065 » passe. Même complément de code que pour l'Estonie (deux sommes pondérées, voir la fiche isikukood-estonien).
  • Le jour 31 est accepté pour tous les mois et le 29 février pour toute année. La série n'est pas bornée, comme dans le document DG TAXUD.
  • python-stdnum accepte aussi un premier chiffre 9 (personnes sans date de naissance connue ?) sans contrôle de date : le document DG TAXUD n'autorise que 1 à 6, et ce motif aussi. Si vous traitez des numéros commençant par 9, élargissez la classe.
  • Un asmens kodas est une donnée personnelle : n'utilisez que les exemples du document officiel ou des numéros synthétiques à date de naissance future.

Pages liées