Rexact
Cheatsheet

Regex SIREN number

A SIREN is 9 digits - but an unanchored regex found on regex101.com matches any 9-digit subsequence inside a longer string, a 14-digit SIRET included. The official PEAR package Validate_FR requires display spaces ("552 100 554") to already be stripped before the call, without documenting that in the regex itself. Here's a pattern that checks the one thing a regex actually can check here (the exact length), compared against these three attempts and the Luhn key none of them compute.

/^\d{9}$/
passes 22/22 cases

Comparison of existing patterns

Implementation

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

Limits

  • 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.

Related pages