Rexact
Cheatsheet

Regex CNP roumain (cod numeric personal)

Le CNP a 13 chiffres : S (sexe et siècle : 1-2 pour 1900-1999, 3-4 pour 1800-1899, 5-6 pour 2000-2099, 7-8 pour les étrangers résidents, 9 pour les autres étrangers), AAMMJJ la date de naissance, JJ le code du département (01 à 47, 51 et 52, d'après la spécification DG TAXUD), NNN un numéro de série et C une clé. Pour S = 9, le document DG TAXUD décrit une forme « 9000… » sans date. Les quatre tentatives réelles relues se limitent à « 13 chiffres » ou à un premier chiffre 1-9, sans borner mois, jour ni département : « 1991399999990 » y passe. La clé (poids 279146358279, modulo 11, 10 donne 1) provient de sources secondaires : la spécification DG TAXUD précise que l'algorithme n'est pas public.

/^(?:[1-8]\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])(?:0[1-9]|[1-3]\d|4[0-7]|5[12])\d{4}|9000\d{9})$/
passe 25/25 cas

Comparatif des patterns existants

Implémentation

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

Limites

  • Valide la forme (sexe/siècle, mois, jour, département) mais PAS la clé : « 1630615123458 » passe. Complément : clé = (Σ chiffre[i] × poids[i] pour les 12 premiers, poids 2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9) % 11, remplacé par 1 si le reste vaut 10. Cet algorithme vient de python-stdnum et de cnp-spec (secondaires) ; la spécification DG TAXUD le déclare non public.
  • Le jour 31 est accepté pour tous les mois et la date n'est pas confrontée à aujourd'hui. Le département est borné d'après la spécification DG TAXUD (01-47, 51, 52) ; python-stdnum accepte aussi 48, 70 et 80-83 (étrangers) : élargissez la classe si nécessaire. La forme « 9000… » est tirée d'un tableau du document dont l'exemple a 12 caractères.
  • Le jour du siècle codé par S n'est pas recoupé avec l'année (S = 5 ou 6 pour 2000-2099, S = 1 ou 2 pour 1900-1999). Le CNP est une donnée personnelle : n'utilisez que des numéros d'exemple ou synthétiques à date de naissance future.

Pages liées