Rexact
Cheatsheet

Regex Norwegian national identity number (fødselsnummer)

A fødselsnummer has 11 digits: DDMMYY, a 3-digit individual number and 2 modulo 11 check digits. Skatteetaten specifies that the D-number (temporary foreigners) adds 4 to the first day digit, i.e. days 41 to 71. H-numbers (identity assistance) add 40 to the month, and test numbers 80. Norwegian blog regexes often stop at ordinary numbers: Epinova's rejects every D- and H-number. golimb's accepts day 32 and month 13, and its '[0-9][1-9]' nonetheless rejects day 50, 60 or 70 of a D-number. Here's a pattern bounding day and month for all three types, compared against those attempts.

/^(?:0[1-9]|[12][0-9]|3[01]|4[1-9]|[56][0-9]|7[01])(?:0[1-9]|1[0-2]|4[1-9]|5[0-2]|8[1-9]|9[0-2])[0-9]{7}$/
passes 23/23 cases

Comparison of existing patterns

Implementation

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

Limits

  • Valide seulement la FORME : ne calcule pas les deux chiffres de contrôle modulo 11. « 13097248032 » et « 13097248023 » ont la bonne forme mais une clé fausse et passent ce motif. Ne valide pas non plus le jour dans le mois (« 29020112345 », 29 février 2001, passe).
  • Le jour accepte 01-31 et 41-71 (D-nummer), le mois 01-12, 41-52 (H-nummer) et 81-92 (numéros de test). Les D- et H-nummer viennent de la source officielle pour le D (premier chiffre + 4) mais du code de navikt/fnrvalidator pour H et T ; les numéros FH, sans date de naissance par conception, ne sont pas couverts.
  • À partir du 1er janvier 2032, le calcul du premier chiffre de contrôle accepte quatre valeurs et le numéro n'encode plus ni le sexe ni le siècle : le motif de forme reste valable, mais la clé et la lecture du numéro changent.
  • Les exemples sont des numéros autogénérés des tests de navikt/fnrvalidator, dont le README précise qu'ils ne correspondent à personne ; n'utilisez pas de vrais numéros d'identité dans vos tests.

Related pages