Rexact
Cheatsheet

Regex numéro d'identité finlandais (henkilötunnus)

Un henkilötunnus s'écrit « 131052-308T » : JJMMAA, un signe de siècle, 3 chiffres et un caractère de contrôle (le reste modulo 31 de JJMMAA+NNN, selon une table de 31 caractères sans G, I, O, Q, Z). Depuis le 1er janvier 2023 (décret 690/2022), le signe devient « A » à « F » pour les naissances depuis 2000, « - » ou « Y, X, W, V, U » pour 1900-1999, et « + » pour 1800-1899. validator.js (validation des identifiants fiscaux) ne connaît encore que « - », « + » et « A » : il rejette « 010594Y9021 », « 010516B903X » et toute personne née depuis 2000 avec un signe B à F. Voici un motif qui couple le signe aux deux derniers chiffres de l'année, comparé à ces trois tentatives.

/^(?:0[1-9]|[12][0-9]|3[01])(?:0[1-9]|1[0-2])(?:[5-9][0-9]\+|[0-9]{2}[-U-Y]|[012][0-9][A-F])[0-9]{3}[0-9A-FHJ-NPR-Y]$/
passe 25/25 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^(?:0[1-9]|[12][0-9]|3[01])(?:0[1-9]|1[0-2])(?:[5-9][0-9]\\+|[0-9]{2}[-U-Y]|[012][0-9][A-F])[0-9]{3}[0-9A-FHJ-NPR-Y]$", "");
re.test(input);

Limites

  • Valide seulement la FORME : ne calcule pas le caractère de contrôle (modulo 31) ni le nombre de jours du mois. « 131052-308U » (mauvaise clé), « 310252-308Y » (31 février) et « 290299-123U » (29 février 1999) ont la bonne forme et passent ce motif.
  • Le signe est couplé aux deux derniers chiffres de l'année : « + » années 50-99, A-F années 00-29, « - » et U-Y toutes années. « 131052A308T » (2052 avec A) est donc rejeté, et il faudra élargir le motif en 2030 ; les naissances de 1800 à 1849 ne sont pas couvertes.
  • Le numéro individuel 002 à 899 est la plage d'usage courant selon la DVV ; la plage 900-999 est temporaire ou de test : le motif l'accepte. Le calcul de la clé ne dépend pas du signe : « 131052-308T » et « 131052Y308T » partagent le même contrôle.
  • Majuscules seulement : « 131052a308t » est rejeté. Le motif ne tolère aucun espace. N'utilisez jamais de vrais numéros d'identité dans vos tests ; les exemples viennent de la DVV et des suites de tests de finnish-ssn.

Pages liées