^(\d{1,2})\.|\.(\d{1,2})\.|\.(\d{1,2})$
У вас есть 3 случая: 1 | 2 цифры после начала, за которым следует точка, 1 | 2 цифры между точками, 1 | 2 цифры после точки в конце строки.
С этим решением у вас будет 3 группы, и вы не сможете узнать, какая часть для средней группы не имеет 3 цифры. Если вы хотите, чтобы 4 группы использовали эту:
(?:^(\d{1,2})\.)|(?:^\d{3}\.(\d{1,2})\.)|(?:\.(\d{2})$)|(?:\.(\d{2})\.\d{2,3})
Редактировать: https://regex101.com/r/eAc8XX/1
Имейте в виду, что я не ищу действительный IPv4 с регулярным выражением тезисов.