Опираясь на некоторые предыдущие ответы (и я буду использовать регулярные выражения, как это аккуратнее):
- Удалить все пробелы или совпавшие () пары
- Если совпадает одно из следующих значений, вернуть число:
- 1 [38] [0-9] {4}
- 1300 [0-9] {6}
- ([(0), (+ 61)] [23478]) {0,1} [1-9] [0-9] {7}
Обратите внимание, что действительными значениями кода города являются [23478]. Я также предположил, что 1800 номеров все еще существуют. Я думаю, что может быть и 1900 номеров.
Кроме того, 000 и 112 являются действительными номерами экстренных служб: в зависимости от конкретного случая использования вы можете явно разрешить или запретить эти номера. Если бы вы хранили «Это мой номер телефона», то вы, вероятно, хотели бы запретить номера экстренных служб, но для чего-то вроде плана набора номера вы бы хотели их разрешить.