You can use grouping with quantifiers:
^[a-zA-Z0-9/.?_]+(?:-[a-zA-Z0-9/.?_]+)*$
Watch the regex demo
More details
^ - beginning of line[a-zA-Z0-9/.?_]+ - 1 , ( [\w/.?]+)(?:-[a-zA-Z0-9/.?_]+)* - ((?:...)*):- - hyphen[a-zA-Z0-9/.?_]+ - .
$ - .
:
^(?!.*--)[a-zA-Z0-9/.?_-]+$
^^^^^^^^^
^ -(?!.*--) - lookahead, , regex -- 0+,[a-zA-Z0-9/.?_-]+ - 1 ,$ - .
, [a-zA-Z0-9_]= \w, Pattern.UNICODE_CHARACTER_CLASS. , "^[\\w/.?]+(?:-[\\w/.?]+)*$", - "^(?!.*--)[\\w/.?-]+$".