Regex numéro de TVA belge (BE + 10 chiffres)
Le numéro de TVA belge, identique au numéro d'entreprise, s'écrit « BE » suivi de 10 chiffres, dont le premier est « 0 » ou « 1 » : la FAQ VIES de la Commission le note « BE0999999999 / BE1999999999 » et précise que le format à 10 chiffres résulte de l'ajout d'un zéro devant l'ancien format à 9 chiffres. Les deux derniers chiffres sont une clé : 97 moins le reste de la division par 97 des 8 premiers chiffres. Parmi les tentatives relues, validator.js accepte un premier chiffre de 2 à 9, jsvat accepte l'ancien format à 9 chiffres et refuse les numéros qui commencent par 1, et la regex du Regular Expressions Cookbook refuse aussi ces derniers. Voici un motif strict à 10 chiffres, comparé à ces tentatives.
/^BE[01][0-9]{9}$/passe 23/23 cas
Comparatif des patterns existants
Implémentation
const re = new RegExp("^BE[01][0-9]{9}$", "");
re.test(input);Limites
- Valide seulement la FORME : « BE0431150351 » a la bonne structure mais une clé fausse et passe ce motif. La clé modulo 97 n'est pas recalculée par la regex.
- Le motif refuse l'ancien format à 9 chiffres (« BE428759497 ») : la FAQ de la Commission indique que le format à 10 chiffres est l'ancien format précédé d'un zéro. Normalisez en ajoutant un « 0 » si vos données anciennes en contiennent.
- La séparation habituelle en BE 0428.759.497 (points) n'est pas acceptée : supprimez les séparateurs avant validation. Aucune vérification d'existence (VIES, Banque-Carrefour des Entreprises).
- Les numéros du corpus sont des exemples de documentation ou synthétiques ; n'utilisez pas de vrais numéros d'entreprise dans vos tests.