Rexact
Cheatsheet

Regex GLN (Global Location Number)

Un GLN (Global Location Number GS1) est treize chiffres dont le dernier est une clé de contrôle calculée par la même pondération alternée (poids 1/3) que l'EAN-13 et le GTIN-14 (voir les fiches liées) — et il fait exactement la même longueur : treize chiffres. Conséquence brutale : une regex ne peut absolument pas distinguer un GLN d'un EAN-13, d'un GTIN-13 ou de toute autre clé GS1 à treize chiffres ; seul le contexte (quel champ, quel système) ou une consultation du registre GS1 le permet. C'est l'illustration la plus nette de ce site — une regex valide une FORME, jamais une identité. Contrairement à l'EAN-13, qui identifie un produit, un GLN identifie une entité légale, une fonction ou un lieu physique : il sert de destinataire d'échange en EDI et en facturation électronique (Peppol, Chorus Pro en France, EDIFACT). Fait révélateur : python-stdnum, bibliothèque Python de référence avec plus de 200 validateurs d'identifiants réels, a un module ean.py mais aucun gln.py — parce qu'un GLN n'a, structurellement, rien de plus à valider qu'un EAN-13. Peut-on vérifier qu'un GLN existe réellement ? Pas avec une regex : il faut interroger le registre GS1, ce qui suppose d'être membre GS1 ou de passer par un service comme Verified by GS1 — une regex, même parfaite, ne dit rien de l'existence réelle du numéro.

/^[0-9]{13}$/
passe 23/23 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^[0-9]{13}$", "");
re.test(input);

Limites

  • Ne distingue jamais un GLN d'un EAN-13, d'un GTIN-13 ou de toute autre clé GS1 à treize chiffres : même longueur, même algorithme de clé de contrôle. Seuls le contexte (quel champ, quel système a produit la valeur) ou une consultation du registre GS1 permettent de trancher — voir le cas piège « 9780306406157 » ci-dessus, un EAN-13 de livre réel qui a la forme exacte d'un GLN.
  • Ne vérifie pas la clé de contrôle (pondération alternée 1/3, modulo 10) : un numéro syntaxiquement valide selon ce motif peut avoir une clé fausse, ou être treize zéros — aucun des deux ne correspond à un lieu ou une entité réellement enregistrés.
  • Confirmer qu'un GLN existe réellement ne se fait pas par une regex : il faut interroger le registre GS1 (ou un service comme Verified by GS1), ce qui suppose d'être membre GS1 — un accès dont ne dispose pas la majorité des personnes qui valident un formulaire d'EDI ou de facturation électronique.
  • N'accepte que des chiffres consécutifs sans séparateur : les exports contenant des espaces, un tiret, ou un préfixe de schéma (« 0088: » en Peppol) doivent être normalisés avant validation.
  • Écrit avec `[0-9]` et non `\d` : en Python et .NET, `\d` matche par défaut tous les chiffres décimaux Unicode (pas seulement 0-9), et son comportement dépend d'une option de compilation en Java — un motif copié tel quel d'un langage à l'autre peut accepter des chiffres non arabes.

Pages liées