JSFiddle - React, Tailwind, and code Playground

HTML

<ul id="results"></ul>

JavaScript

var camelCase = (function () {
    var DEFAULT_REGEX = /[-_]+(.)?/g;

    function toUpper(match, group1) {
        return group1 ? group1.toUpperCase() : '';
    }

    return function (str, delimiters) {
        return str.replace(delimiters ? new RegExp('[' + delimiters + ']+(.)', 'g') : DEFAULT_REGEX, toUpper);
    };
})();

addResult('ab-cd-ef');
addResult('ab-cd-ef-');
addResult('ab-cd-ef--');
addResult('ab-cd--ef--');
addResult('--ab-cd--ef--');
addResult('--ab-cd-__-ef--');

function addResult(input) {
    var item = document.createElement('li');
    item.innerHTML = 'input: "' + input + '", result: "' + camelCase(input) + '"';
    document.getElementById('results').appendChild(item);
}