Regex code APE/NAF
Un code APE, ce n'est pas juste « 4 chiffres et une lettre » : la nomenclature NAF rév. 2 de l'INSEE ne compte que 21 sections, lettrées de A à U sans lacune — les lettres V à Z n'existent dans aucune section. Un utilitaire Java publié sur GitHub accepte pourtant n'importe quelle lettre de A à Z, tout comme une regex republiée sur regex101.com. Un message de forum, lui, inverse carrément le format demandé (4 lettres + 1 chiffre au lieu de 4 chiffres + 1 lettre) alors que le message précédent du même fil précisait pourtant la bonne règle. Voici un motif qui respecte les 21 sections réelles, comparé à ces trois tentatives.
/^[0-9]{4}[A-U]$/passe 22/22 cas
Comparatif des patterns existants
| Source | pattern | Score sur le 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 | sûr |
| 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 | sûr |
| 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 | sûr |
Implémentation
const re = new RegExp("^[0-9]{4}[A-U]$", "");
re.test(input);Limites
- 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.