Remove all occurrences except last?

You can use regex with positive look ahead,

"1.2.3.4".replace(/[.](?=.*[.])/g, "");

2-liner:

function removeAllButLast(string, token) {
    /* Requires STRING not contain TOKEN */
    var parts = string.split(token);
    return parts.slice(0,-1).join('') + token + parts.slice(-1)
}

Alternative version without the requirement on the string argument:

function removeAllButLast(string, token) {
    var parts = string.split(token);
    if (parts[1]===undefined)
        return string;
    else
        return parts.slice(0,-1).join('') + token + parts.slice(-1)
}

Demo:

> removeAllButLast('a.b.c.d', '.')
"abc.d"

The following one-liner is a regular expression that takes advantage of the fact that the * character is greedy, and that replace will leave the string alone if no match is found. It works by matching [longest string including dots][dot] and leaving [rest of string], and if a match is found it strips all '.'s from it:

'a.b.c.d'.replace(/(.*)\./, x => x.replace(/\./g,'')+'.')

(If your string contains newlines, you will have to use [.\n] rather than naked .s)