见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 之后允许的最大位数。
我这样做是为了如果您使用的位数超过最大位数,它将不匹配。
我相信它可以在您根据需要键入每个字符时起作用。 (您没有指出允许数字集之间有空格,但这可能会被修改以处理。)
鉴于正则表达式的复杂性,我不确定我是否真的推荐使用这种方法......