Regex French APE/NAF business activity code
An APE code isn't just "4 digits and a letter": INSEE's NAF rev. 2 classification has exactly 21 sections, lettered A through U with no gap - letters V through Z exist in no section at all. A Java utility published on GitHub nonetheless accepts any letter from A to Z, as does a regex republished on regex101.com. A forum post outright reverses the requested format (4 letters + 1 digit instead of 4 digits + 1 letter), even though the previous message in that very thread had stated the correct rule. Here's a pattern respecting the real 21 sections, compared against these three attempts.
/^[0-9]{4}[A-U]$/passes 22/22 cases
Comparison of existing patterns
| Source | pattern | Score on the corpus | ReDoS |
|---|---|---|---|
| Forum Developpez.net (SpaceFrog, message #4) — inverse le format demandé (4 lettres + 1 chiffre) alors que le message précédent du même fil précisait pourtant « 4 chiffres et 1 lettre » | ^([a-z]{4}[0-9]{1}|[a-z]{3}[0-9]{1}[a-z]{1}|[a-z]{2}[0-9]{1}[a-z]{2}|[a-z]{1}[0-9]{1}[a-z]{3}|[0-9]{1}[a-z]{4})$ | 16 / 22 | safe |
| GitHub EsupPortail/esup-pstagedata (Utils.java, REGEX_CODE_NAF) — accepte n'importe quelle lettre de A à Z (dont V-Z, absentes de toute section) et un point optionnel entre les chiffres | ^([0-9]{2}\.?[0-9]{2}[a-zA-Z]{1})$ | 17 / 22 | safe |
| regex101.com, bibliothèque communautaire « French code ape » (1 vote) — non ancrée, accepte aussi n'importe quelle lettre de A à Z | (\d{4}[a-zA-Z]{1}|\d{2}[.]\d{2}[a-zA-Z]{1}) | 13 / 22 | safe |
Implementation
const re = new RegExp("^[0-9]{4}[A-U]$", "");
re.test(input);Limits
- Valide seulement la FORME (4 chiffres, 1 lettre parmi A-U) : ne vérifie pas que la combinaison précise des 4 chiffres correspond à une sous-classe réellement définie dans la nomenclature NAF — un code syntaxiquement valide selon ce motif peut ne correspondre à aucune activité réellement répertoriée.
- Ne consulte pas le répertoire SIRENE de l'INSEE : seule une requête à l'API officielle (recherche-entreprises.api.gouv.fr) confirme le code APE réellement attribué à une entreprise donnée.
- Exige une chaîne sans séparateur ni espace : le point parfois utilisé à l'affichage entre les 2 premiers et les 2 derniers chiffres n'existe pas dans le code officiel lui-même.
- Ne s'applique qu'à la France : les autres pays de l'Union européenne utilisent leur propre déclinaison nationale de la nomenclature NACE (par ex. la nomenclature belge NACE-BEL), avec des formats de code différents.