JSFiddle - React, Tailwind, and code Playground
HTML
<div id="results"></div>
JavaScript
(function ($) {
var n = '101',
max = 10000000,
pats = [/^(1*(01*0)*)+|0*1(0*(10*1)*)*$/g, /^(?:1*(?:01*0)*)+|0*1(?:0*(?:10*1)*)*$/g],
testct = 1,
log = function (str) {
$('ul:last').append('<li>' + str + '</li>');
},
test = function (i, pat) {
var pat = pat ? pat[i] : pats[i];
var start = new Date().getTime();
$('#results').append('<ul></ul>');
log('<b>Test ' + testct + '</b>');
log('using pattern ' + i + ': ' + pat);
log('using string: '+n);
log('begin: ' + start);
for (var i = 0; i <= max; i++) {
var x = pat.test(n);
if(i==max)
log('test result: '+x);
}
log('elapsed time: ' + (new Date().getTime() - start));
testct++;
}
test(0);
test(1);
test(0);
test(1);
})(jQuery);