Rexact
Cheatsheet

Regex numéro de téléphone australien

L'ACMA, le régulateur australien, publie des numéros réservés aux fictions : par exemple 0491 570 006 pour un mobile ou (02) 5550 xxxx pour un fixe. Ce sont de bons exemples de test, car ils sont écrits comme les gens les écrivent, avec des espaces. Or la regex de validator.js refuse « 0491 570 006 » à cause de ses espaces ; celle de sent.dm n'accepte que des chiffres collés ; et celle d'un blog populaire accepte « 38921111 » (8 chiffres sans indicatif) tout en refusant « +61 491 570 006 ». Voici un motif qui accepte les séparateurs, +61 et les numéros 1800 et 13xx, comparé à ces tentatives.

/^(?:(?:\+61 ?4|04)(?: ?[0-9]){8}|(?:\+61 ?[2378]|0[2378]|\(0[2378]\))(?: ?[0-9]){8}|1800(?: ?[0-9]){6}|13(?: ?[0-9]){4}|1300(?: ?[0-9]){6})$/
passe 28/28 cas

Comparatif des patterns existants

Implémentation

const re = new RegExp("^(?:(?:\\+61 ?4|04)(?: ?[0-9]){8}|(?:\\+61 ?[2378]|0[2378]|\\(0[2378]\\))(?: ?[0-9]){8}|1800(?: ?[0-9]){6}|13(?: ?[0-9]){4}|1300(?: ?[0-9]){6})$", "");
re.test(input);

Limites

  • Valide seulement la FORME : ne vérifie pas que le numéro est attribué. Les indicatifs régionaux ne sont pas contrôlés au-delà de 02, 03, 07 et 08, ni les préfixes mobiles au-delà de 04.
  • Le plan de numérotation 2025 de l'ACMA mentionnerait aussi 05 comme préfixe mobile (document relu par une source tierce, non confirmé ici) : « 0591 570 006 » est rejeté par ce motif. Les numéros 13 et 1300 et 1800 sont acceptés, mais pas les autres numéros spéciaux (190x, 12xx…).
  • Les séparateurs sont limités à une espace facultative entre les chiffres ; « 02-5550-1234 » est rejeté, tout comme les parenthèses non appariées. Après +61, le 0 de tronc ne doit pas être gardé : « +61 0491… » est rejeté.
  • Les numéros du corpus viennent de la liste officielle de l'ACMA, réservée aux œuvres de fiction ; les numéros 02 1234 5678 et 0412 345 678 sont les exemples de libphonenumber.

Pages liées