Rexact
Cheatsheet

Regex numéro de téléphone néerlandais

Un numéro néerlandais compte 10 chiffres avec le 0 de tronc : un netnummer de 2 ou 3 chiffres (010 Rotterdam, 070 La Haye, 0222 Texel) suivi de l'abonné pour un fixe, ou 06 puis 8 chiffres pour un mobile. Avec +31, le 0 disparaît. Les tentatives réelles que j'ai relues se trompent de façon différente : la regex fixe de sent.dm n'impose que 9 chiffres au total et accepte donc « 012345678 » tout en refusant un vrai fixe à 10 chiffres, sa regex mobile accepte une virgule (« 06,1234567 »), celle de jquery-validation accepte 060, 066, 08 et 09 et celle de validator.js ne couvre que les mobiles. Voici un motif qui sépare fixes, mobiles, 085/088 et numéros 0800/090x, comparé à ces tentatives.

/^(?:(?:\+|00)31 ?|0)(?:[1-57](?:[ -]?[0-9]){8}|6(?=[ -]?[1-58])(?:[ -]?[0-9]){8}|8(?=[ -]?[4578])(?:[ -]?[0-9]){8}|800(?:[ -]?[0-9]){4,7}|90[069](?:[ -]?[0-9]){4,7})$/
passe 36/36 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^(?:(?:\\+|00)31 ?|0)(?:[1-57](?:[ -]?[0-9]){8}|6(?=[ -]?[1-58])(?:[ -]?[0-9]){8}|8(?=[ -]?[4578])(?:[ -]?[0-9]){8}|800(?:[ -]?[0-9]){4,7}|90[069](?:[ -]?[0-9]){4,7})$", "");
re.test(input);

Limites

  • Valide seulement la FORME : ne vérifie pas que le numéro est attribué ni que le netnummer existe : tout 0 suivi de 1 à 5 ou de 7 passe, la liste des netnummers (141 régions) étant tenue par le ministère et l'ACM.
  • Après +31 ou 0031, le 0 de tronc ne doit pas être gardé : « +31 06… » est rejeté, de même que la forme « +31 (0)6… » encore courante aux Pays-Bas. Retirez le « (0) » avant validation.
  • Les longueurs et les premiers chiffres (mobile 061 à 065 et 068, fixe 1 à 5 et 7, 08x, 090x) viennent des métadonnées de libphonenumber, pas de la page de l'ACM, qui ne les donne pas. Les 066 (pagers), 067, 069, 091 et 097 sont rejetés.
  • Une espace ou un tiret facultatifs sont acceptés entre deux chiffres quelconques ; les parenthèses, points et extensions sont rejetés.

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

Pages liées