Rexact
Cheatsheet

Regex numéro SIREN

Un SIREN, ce sont 9 chiffres — mais une regex non ancrée trouvée sur regex101.com matche n'importe quelle sous-séquence de 9 chiffres à l'intérieur d'une chaîne plus longue, un SIRET à 14 chiffres y compris. Le paquet PEAR officiel Validate_FR, lui, exige que les espaces d'affichage (« 552 100 554 ») aient déjà été retirés avant l'appel, sans le documenter dans la regex elle-même. Voici un motif qui vérifie la seule chose qu'une regex peut vérifier ici (la longueur exacte), comparé à ces trois tentatives et à la clé de Luhn qu'aucune d'elles ne calcule.

/^\d{9}$/
passe 22/22 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^\\d{9}$", "");
re.test(input);

Limites

  • Valide seulement la FORME (9 chiffres) : ne vérifie pas la clé de Luhn du neuvième chiffre — un SIREN syntaxiquement valide selon ce motif peut avoir une clé fausse et ne correspondre à aucune entreprise réellement immatriculée.
  • Ne consulte pas le répertoire SIRENE de l'INSEE : seule une requête à l'API officielle (recherche-entreprises.api.gouv.fr) confirme qu'un SIREN est réellement attribué et actif, pas seulement bien formé.
  • Exige une chaîne de 9 chiffres consécutifs sans séparateur : l'espacement par groupes de 3 couramment utilisé à l'affichage (« 552 100 554 ») doit être retiré avant validation.
  • Ne distingue pas un SIREN d'un SIRET tronqué : les 9 premiers chiffres d'un SIRET (14 chiffres) sont numériquement identiques au SIREN de l'entreprise, donc structurellement indiscernables d'un vrai SIREN sans connaître le contexte de la saisie.

Pages liées