Rexact
Cheatsheet

Regex Australian phone number

The ACMA, Australia's regulator, publishes numbers reserved for drama, such as 0491 570 006 for a mobile or (02) 5550 xxxx for a landline. They make good test examples because they are written the way people write them, with spaces. Yet validator.js's regex refuses '0491 570 006' because of its spaces; sent.dm's accepts only unspaced digits; and a popular blog's regex accepts '38921111' (8 digits with no area code) while refusing '+61 491 570 006'. Here's a pattern accepting separators, +61 and 1800 and 13xx numbers, compared against those attempts.

/^(?:(?:\+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})$/
passes 28/28 cases

Comparison of existing patterns

Implementation

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

Limits

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

Related pages