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};
}