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 ..