Regex Belgian VAT number (BE + 10 digits)
The Belgian VAT number, identical to the enterprise number, is written 'BE' followed by 10 digits whose first is '0' or '1': the Commission's VIES FAQ lists it as 'BE0999999999 / BE1999999999' and states that the 10-digit format results from adding a leading zero to the old 9-digit format. The last two digits are a check: 97 minus the remainder of the first 8 digits divided by 97. Among the attempts read, validator.js accepts a first digit from 2 to 9, jsvat accepts the old 9-digit format and rejects numbers starting with 1, and the Regular Expressions Cookbook's regex rejects those too. Here's a strict 10-digit pattern, compared against those attempts.
/^BE[01][0-9]{9}$/passes 23/23 cases
Comparison of existing patterns
Implementation
const re = new RegExp("^BE[01][0-9]{9}$", "");
re.test(input);Limits
- 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.