Rexact
Cheatsheet

Regex numéro de téléphone belge

Un numéro belge commence par 0 (préfixe de tronc, supprimé avec +32) suivi d'un indicatif de zone d'un chiffre (02 Bruxelles, 03 Anvers, 04 Liège) ou de deux chiffres (010 Wavre, 050 Bruges, 081 Namur) puis de l'abonné : 8 chiffres après le 0 pour un fixe, 9 pour un mobile 04xx. On écrit « 02 234 56 78 », « 02/234.56.78 » ou « 0475 12 34 56 ». La regex fixe de sent.dm écrit « [1-9]{1,2} » : le zéro est exclu, donc 010, 050 ou 090 sont refusés ; celle de validator.js ne couvre que les mobiles ; celle de Drupal accepte 04 suivi de n'importe quoi. Voici un motif qui borne le début de chaque indicatif, comparé à ces tentatives.

/^(?:(?:\+|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})$/
passe 33/33 cas

Comparatif des patterns existants

Implémentation

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);

Limites

  • 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.

Numéros de téléphone d’autres pays

Pages liées