См. https://regex101.com/r/seh5w4/4
^((04)|(0)|(\+61)|(\+6)|(\+))(?(2)(\d{0,6}))(?(3)((?(?=4)4\d{0,6})))(?(4)(\d{0,6}))(?(5)((?(?=1)1\d{0,6})))(?(6)((?(?=61)61\d{0,6})))$
^((04)|(0)|(\+61)|(\+6)|(\+)) does it start with one of these these
(?(2)(\d{0,6})) if there is a group 2 (04) is it followed by 0-6 digits
(?(3)((?(?=4)4\d{0,6}))) if group 3 (0) is it followed by a 4, if so is that 4 followed by 0-6 digits
(?(4)(\d{0,6})) if group 4 (+61) is it followed by 0-6 digits
(?(5)((?(?=1)1\d{0,6}))) if group 5 (+6) is it followed by a 1, if so is that 1 followed by 0-6 digits
(?(6)((?(?=61)61\d{0,6}))) if group 6 (+), is it followed by 61, if so is that 61 followed by 0-6 digits
Я использовал 6 цифр, вы должны изменить это для любого максимального числа цифр, разрешенного после 04 или + 61.
Я сделал так, чтобы оно не совпадало, если бы вы использовали больше максимального числа цифр.
Я считаю, что это работает, когда вы печатаете каждый символ так, как вам хочется.(Вы не указали разрешить пробелы между наборами чисел, но, вероятно, это можно изменить, чтобы справиться с этим.)
Учитывая сложность регулярного выражения, я не уверен, что на самом деле рекомендую использовать этот подход ...