regex - extraer nombre de dominio y TLD

Estoy tratando de extraer el nombre de dominio y el TLD (si existe) de una cadena.

Para "testing.co.uk" Quiero tener una matriz con valores: ("testing", "co.uk")

Para "-testing.c" Quiero tener una matriz con un valor: ("prueba")

Para "test-ing.co.uk.com" Quiero tener una matriz con valores ("test-ing", "co.uk")

Las reglas son simples:

El primer y último carácter del nombre de dominio no puede ser "-"TLD debe tener al menos dos caracteresa parte @TLD puede tener un carácter de punto "." pero solo si es seguido por al menos dos letras

Tengo esto

(\w[-\w]*\w) - Primera parte que extrae el nombre de dominio (Trabajo)\.(\w{2,}(\.?\w{2,})?) - obtenga el TLD (no funciona)

Respuestas a la pregunta(4)

Su respuesta a la pregunta