`[a-z0-9\.\*-]+` includes `\.` and `[a-z0-9\*-]+`. So I think `^([a-z0-9\.\*-]+\.)*[a-z0-9\*-]+$` means last char is `[a-z0-9\*-]` and other optional chars are `[a-z0-9\.\*-]*`.
`[a-z0-9\.\*-]+` includes `\.` and `[a-z0-9\*-]+`. So I think `^([a-z0-9\.\*-]+\.)*[a-z0-9\*-]+$` means last char is `[a-z0-9\*-]` and other optional chars are `[a-z0-9\.\*-]*`.