Какие правила вы бы использовали для подтверждения австралийского номера телефона? - PullRequest
8 голосов
/ 27 ноября 2008

Что я могу сделать для полной проверки австралийского номера телефона? Мне нужно это для приложения, которое я пишу. Вы можете предположить, что это набрано из Австралии. Я хочу использовать подход белого списка.

Вот мои правила (после удаления любых пробелов): -

  1. Начинается с 13 и имеет длину 6 цифр
  2. Начинается с 1300 и имеет длину 10 цифр
  3. Начинается с 0 (но не с 0011, поскольку это международный набор) и имеет длину 10 цифр
  4. Начинается с +61, за которым следуют 9 цифр
  5. Начинается с (0_), за которым следуют 8 цифр (где _ 1-9)

Есть что-то, что я пропустил?

Требуются коды города, поскольку мы можем отправлять факс с нашего факс-сервера в одном состоянии, когда пользователь находится в другом состоянии.

(Я не спрашиваю, как сделать регулярное выражение из приведенных выше правил, но если эти правила верны).

Смотри также:
Номера телефонов Великобритании
Номера телефонов США

Ответы [ 6 ]

9 голосов
/ 27 ноября 2008

Я делал нечто подобное некоторое время назад. Страница Википедии, о которой немыслимо упоминал Майхем, была отличной отправной точкой.

По состоянию на год назад мои правила выглядели примерно так:

02[3-9]\d{7}  NSW/ACT
03[4-9]\d{7}  VIC/TAS
07[3-9]\d{7}  QLD
08\d{8}       SA/NT/WA

04[\d]{8}     Moblies  04x[123] = Optus,  04x[456] = Voda, 04x[0789] = Telstra

0500[\d]{6}   Find me anywhere server
0550[\d]{6}   VoIP
059[\d]{7}    Enum

13[\d]{4}     Local rate
1300[\d]{6}   Local rate

1800[\d]{6}   Free call

0198[\d]{2}   Data networks (local call anyway I think)
0198[\d]{6}

190[\d]{7}    Premium rate
2 голосов
/ 27 ноября 2008

Опираясь на некоторые предыдущие ответы (и я буду использовать регулярные выражения, как это аккуратнее):

  1. Удалить все пробелы или совпавшие () пары
  2. Если совпадает одно из следующих значений, вернуть число:
    1. 1 [38] [0-9] {4}
    2. 1300 [0-9] {6}
    3. ([(0), (+ 61)] [23478]) {0,1} [1-9] [0-9] {7}

Обратите внимание, что действительными значениями кода города являются [23478]. Я также предположил, что 1800 номеров все еще существуют. Я думаю, что может быть и 1900 номеров.

Кроме того, 000 и 112 являются действительными номерами экстренных служб: в зависимости от конкретного случая использования вы можете явно разрешить или запретить эти номера. Если бы вы хранили «Это мой номер телефона», то вы, вероятно, хотели бы запретить номера экстренных служб, но для чего-то вроде плана набора номера вы бы хотели их разрешить.

1 голос
/ 26 ноября 2015

Для окончательного списка, попробуйте https://github.com/googlei18n/libphonenumber

Общая библиотека Google Java, C ++ и JavaScript для анализа, форматирования, хранения и проверки международных телефонных номеров. Версия Java оптимизирована для работы на смартфонах и используется платформой Android начиная с 4.0 (Ice Cream Sandwich).

Вы можете проверить это здесь: https://rawgit.com/googlei18n/libphonenumber/master/javascript/i18n/phonenumbers/demo-compiled.html

Это было слишком много для моей маленькой работы, и я обобщил свой тест, но эта библиотека позволит вам проверить ваши правила:)

1 голос
/ 27 ноября 2008

0011 - не единственный международный код доступа. Например, для вызова за границу по факсу следует использовать 0015 - это позволяет избежать эффекта сжатия голоса, который не подходит для факса (или данных, если вы используете модем). В базе данных моих офисных телефонов есть префиксы 0015 для некоторых международных номеров факсов. Существуют и другие международные телефонные коды специального назначения.

И я все еще вижу номера мобильных телефонов, написанные как (0411) 123 456

0 голосов
/ 27 ноября 2008

Это, вероятно, то, что вы после:

http://www.comlaw.gov.au/comlaw%5Cmanagement.nsf/lookupindexpagesbyid/IP200506356?OpenDocument

План нумерации электросвязи, 1997 год. Устанавливает структуру для нумерации услуг по перевозке и для использования номеров в связи с предоставлением услуг по перевозке, определяет номера для использования в связи с предоставлением услуг по перевозке и устанавливает структуру для распределения и переноса номеров.

Это краткий 261-страничный документ, содержащий все, что вам нужно знать:)

0 голосов
/ 27 ноября 2008

Я бы тоже хотел убрать скобки. Я до сих пор вижу номера телефонов, написанные как "(0212) 34 5678" время от времени.

Используются ли еще 008 номеров? Как насчет 1800? Я думаю, что это действительный префикс, похожий на 1300 в наше время.

...