JSFiddle - React, Tailwind, and code Playground

by Travis Harris

JavaScript

var regex = new RegExp('^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$','gi');
console.log(regex,regex.global);
var clean_regex = deGlobal(regex);
console.log(clean_regex,clean_regex.global);

    function deGlobal(regex){
        if(!regex instanceof RegExp)return regex;
        if(!regex.global)return regex;
        var parts = regExpParts(regex);
        console.log(parts);
        if(parts){
            return new RegExp(parts.pattern,parts.flags.replace("g",""));
        } else {
            return false;
        }
    }
    function regExpParts(regex){
        if(!regex instanceof RegExp)return false;
        var regex_string = regex.toString();
        var flags = regex_string.substring(regex_string.lastIndexOf('/')+1);
        var pattern = regex_string.substring(1,regex_string.lastIndexOf('/'));
        return {flags:flags,pattern:pattern};
    }