JSFiddle - React, Tailwind, and code Playground

HTML

<div id="output"></div>

JavaScript

function zotSentenceCase(title) {
    function capitalizePreservingUCASE(sentence) {
        console.log("sentence", sentence);
        function UCASEONLY(word) {
            return word === word.toLocaleUpperCase();
        }
        var words = sentence.split(/\s+/);
        var newSentencd = "";
        for (var i=0, len=words.length; i<len; i++) {
            var word = words[i];
            console.log("word", word);
            if (UCASEONLY(word)) {
                newSentence += word;
            } else if (0 == i) {
                newSentence = word[0].toLocaleUpperCase()+word.substr(1).toLocaleLowerCase();
            } else {
                newSentence += word.toLocaleLowerCase();
            }
            if (i !== len-1) newSentence += " ";
        }
        console.log("newSentence", newSentence);
        return newSentence;
    }
    var colParts = title.split(/\s*:\s*/);
    console.log(colParts);
    var whole = "";
    for (var i=0, len=colParts.length; i<len; i++) {
        var sentence = colParts[i];
        console.log("sentence", i, sentence);
        whole += capitalizePreservingUCASE(sentence);
        if (i !== len-1) whole += ": ";
    }
    console.log("whole", whole);
    return whole;
}
var test = "a sEntence with ADHD and Normal Words : plus a colon"
var res = zotSentenceCase(test);
document.getElementById("output").appendChild(document.createTextNode(res));