JSFiddle - React, Tailwind, and code Playground

JavaScript

var BuildRegex = function(matches) {
    "use strict";

    var splits = matches.split(','),
        res = '^(',
        i, subSplit, min, max, temp, tempMin;

    if (splits.length === 0) {
        return new RegExp('^()$');
    }

    for (i = 0; i < splits.length; i += 1) {
        if (splits[i] === '*') {
            return new RegExp('^([0-9]+)$');
        }

        subSplit = splits[i].split('-');

        min = BuildRegex.Trim(subSplit[0], '0');

        if (min === '') {
            return null;
        }

        if (subSplit.length === 1) {
            res += min;
            res += '|';

            continue;
        } else if (subSplit.length > 2) {
            return null;
        }

        max = BuildRegex.Trim(subSplit[1], '0');

        if (max === '') {
            return null;
        }

        if (min.length > max.length) {
            return null;
        }

        // For 2-998 we first produce 2-9, then 10-99
        temp = BuildRegex.DifferentLength(res, min, max);

        tempMin = temp.min;

        if (tempMin === null) {
            return null;
        }

        res = temp.res;

        // Then here 100-998
        res = BuildRegex.SameLength(res, tempMin, max);
    }

    res = res.substr(0, res.length - 1);
    res += ')$';

    return new RegExp(res);
};

BuildRegex.Repeat = function(ch, n) {
    "use strict";

    return new Array(n + 1).join(ch);
};

BuildRegex.Trim = function(str, ch) {
    "use strict";

    var i = 0;

    while (i < str.length && str[i] === ch) {
        i += 1;
    }

    return str.substr(i);
};

BuildRegex.IsOnlyDigit = function(str, start, digit) {
    "use strict";

    var i;

    for (i = start; i < str.length; i += 1) {
        if (str[i] !== digit) {
            return false;
        }
    }

    return true;
};

BuildRegex.RangeDigit = function(min, max) {
    "use strict";

    if (min === max) {
        return min;
    }

    return '[' + min + '-' + max + ']';
};

BuildRegex.DifferentLength =...