just use:
gsub("(.*?)(?<!\\.)\\.\\..*", "\\1", 'PAN3.AS1..100288730', perl = T)
syntex
(?<!\\.)
: a negative lookbehind which ensures ..
isn't preceded by .
.*?
: matches any characters (non-greedy) up to the ..
\\1
: replacement - which keeps only the part before ..