Rexact
Cheatsheet

Regex Steuer-IdNr allemand (identifiant fiscal)

La Steuer-IdNr est une suite de 11 chiffres dont le premier n'est jamais 0 et dont le 11e est une clé (ISO 7064, modulo 11,10). Les règles de structure publiées par le Bayerisches Landesamt für Steuern (document ELSTER) sont : dans les 10 premiers chiffres, exactement un chiffre apparaît deux ou trois fois, les autres au plus une fois, et s'il apparaît trois fois, jamais sur trois positions consécutives. Une regex peut exprimer cela avec des assertions avant et des références arrière, ce que font peu de bibliothèques : les quatre tentatives réelles relues se contentent de « 11 chiffres », voire de 11 chiffres avec premier chiffre non nul, et acceptent « 12345678903 » (aucun chiffre répété). La clé modulo 11,10 ne s'exprime pas en regex : ajoutez le contrôle de code décrit dans les limites.

/^(?!0)(?=\d{11}$)(?=\d*?(\d)\d*?\1\d+$)(?!\d*?(\d)(?:\d*?\2){3}\d+$)(?!\d*?(\d)(?=\d*\3\d+$)(?=\d*?(?!\3)(\d)\d*\4\d+$))(?!\d*?(\d)\5\5\d+$)\d{11}$/
passe 27/27 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^(?!0)(?=\\d{11}$)(?=\\d*?(\\d)\\d*?\\1\\d+$)(?!\\d*?(\\d)(?:\\d*?\\2){3}\\d+$)(?!\\d*?(\\d)(?=\\d*\\3\\d+$)(?=\\d*?(?!\\3)(\\d)\\d*\\4\\d+$))(?!\\d*?(\\d)\\5\\5\\d+$)\\d{11}$", "");
re.test(input);

Limites

  • Valide la structure (11 chiffres, premier non nul, répétitions) mais PAS la clé ISO 7064 modulo 11,10 : « 36574261890 » a la bonne structure et une clé fausse, et passe. Complément : x = 10 ; pour chacun des 10 premiers chiffres d : y = (d + x) % 10 (si 0, alors 10) ; x = (2 × y) % 11 ; la clé est 11 − x, ramenée à 0 si elle vaut 10.
  • Les test-IdNr à zéro initial (comme 02476291358, citée par le document ELSTER) sont rejetées : si vous gérez un environnement de test fiscal, assouplissez « (?!0) ».
  • Ne dit rien de l'attribution du numéro. Le motif suit le document ELSTER (un chiffre répété deux ou trois fois) ; la spécification DG TAXUD de 2017 décrit deux variantes successives de cette règle, la plus ancienne n'autorisant que le doublon. Les espaces de présentation (« 36 574 261 809 ») sont rejetés : normalisez d'abord.
  • Les numéros du corpus sont ceux du document ELSTER et de documentations, ou synthétiques à clé recalculée ; une Steuer-IdNr est une donnée personnelle, n'en utilisez pas de réelles.

Pages liées