Rexact
Cheatsheet

Regex ABN australien (numéro d'entreprise)

Un ABN (Australian Business Number) a 11 chiffres, écrits « 51 824 753 556 » : deux chiffres de clé suivis d'un identifiant à 9 chiffres. Le registre ABR décrit le contrôle : on retire 1 au premier chiffre, on multiplie les 11 chiffres par les poids 10 1 3 5 7 9 11 13 15 17 19, et la somme doit être divisible par 89. Une regex ne peut pas faire ce calcul, mais elle fixe la forme. Les motifs relus ici n'acceptent chacun qu'une écriture (compacte pour django-localflavor, avec espaces pour Presidio) et ceux de Presidio ne sont pas ancrés. Voici un motif qui accepte les deux écritures usuelles, comparé à ces tentatives.

/^(?:[0-9]{11}|[0-9]{2} [0-9]{3} [0-9]{3} [0-9]{3})$/
passe 24/24 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^(?:[0-9]{11}|[0-9]{2} [0-9]{3} [0-9]{3} [0-9]{3})$", "");
re.test(input);

Limites

  • Valide seulement la FORME : ne fait pas le modulo 89. « 51 824 753 557 » a la bonne forme mais ne passe pas le contrôle de l'ABR, et ce motif l'accepte ; faites le calcul dans le code (poids de la page de l'ABR).
  • N'établit pas que l'ABN est actif ni qu'il correspond à une entreprise : seule une recherche dans ABN Lookup le dit. Le motif ne couvre pas l'ACN (9 chiffres) ni le TFN, qui sont d'autres identifiants.
  • Seul l'espace simple sépare les groupes (écriture officielle) : tirets, points et tabulations sont refusés, normalisez avant.

Pages liées