Rexact
Cheatsheet

Regex Belgian phone number

A Belgian number starts with 0 (trunk prefix, dropped with +32) followed by an area code of one digit (02 Brussels, 03 Antwerp, 04 Liège) or two digits (010 Wavre, 050 Bruges, 081 Namur) then the subscriber part: 8 digits after the 0 for a landline, 9 for a 04xx mobile. People write '02 234 56 78', '02/234.56.78' or '0475 12 34 56'. sent.dm's landline regex writes '[1-9]{1,2}': zero is excluded, so 010, 050 or 090 are refused; validator.js's covers only mobiles; Drupal's accepts 04 followed by anything. Here's a pattern bounding the start of each area code, compared against those attempts.

/^(?:(?:\+|00)32 ?|0)(?:1(?=[ ./-]?[0-69])(?:[ ./-]?[0-9]){7}|[23](?=[ ./-]?[2-8])(?:[ ./-]?[0-9]){7}|4(?=[ ./-]?[23])(?:[ ./-]?[0-9]){7}|4(?=[ ./-]?[5-9])(?:[ ./-]?[0-9]){8}|5(?:[ ./-]?[0-9]){7}|6(?=[ ./-]?[013-57-9])(?:[ ./-]?[0-9]){7}|7(?=[ ./-]?1)(?:[ ./-]?[0-9]){7}|8(?=[ ./-]?[1-79])(?:[ ./-]?[0-9]){7}|80(?=[ ./-]?[2-8])(?:[ ./-]?[0-9]){6}|800(?=[ ./-]?[1-9])(?:[ ./-]?[0-9]){5}|9(?=[ ./-]?[2-4])(?:[ ./-]?[0-9]){7})$/
passes 33/33 cases

Comparison of existing patterns

Implementation

const re = new RegExp("^(?:(?:\\+|00)32 ?|0)(?:1(?=[ ./-]?[0-69])(?:[ ./-]?[0-9]){7}|[23](?=[ ./-]?[2-8])(?:[ ./-]?[0-9]){7}|4(?=[ ./-]?[23])(?:[ ./-]?[0-9]){7}|4(?=[ ./-]?[5-9])(?:[ ./-]?[0-9]){8}|5(?:[ ./-]?[0-9]){7}|6(?=[ ./-]?[013-57-9])(?:[ ./-]?[0-9]){7}|7(?=[ ./-]?1)(?:[ ./-]?[0-9]){7}|8(?=[ ./-]?[1-79])(?:[ ./-]?[0-9]){7}|80(?=[ ./-]?[2-8])(?:[ ./-]?[0-9]){6}|800(?=[ ./-]?[1-9])(?:[ ./-]?[0-9]){5}|9(?=[ ./-]?[2-4])(?:[ ./-]?[0-9]){7})$", "");
re.test(input);

Limits

  • Valide seulement la FORME : ne vérifie pas que le numéro est attribué. Les premiers chiffres (zones 1 à 9, mobiles 045 à 049) suivent libphonenumber ; la liste précise des indicatifs de zone est tenue par l'IBPT, dont la base d'attribution n'a pas été relue ici.
  • Après +32 ou 0032, le 0 de tronc ne doit pas être gardé : « +32 02… » est rejeté. Les préfixes mobiles 040 à 044 sont rejetés, car libphonenumber ne les liste pas.
  • Les numéros 070 (partagés), 078, 090x (surtaxés) et les services 1xxx ne sont pas acceptés. Le 0800 doit compter 8 chiffres au total.
  • Une espace, un point, une barre oblique ou un tiret facultatifs sont acceptés entre deux chiffres quelconques ; les parenthèses et extensions sont rejetées.

Phone numbers for other countries

Related pages