blob: 44f0a7283fade91113fd1a013bf5cd0bb340abf2 [file] [log] [blame]
description(
"A chunk of our port of PCRE's test suite, adapted to be more applicable to JavaScript."
);
var regex0 = /the quick brown fox/;
var input0 = "the quick brown fox";
var results = ["the quick brown fox"];
shouldBe('regex0.exec(input0);', 'results');
var input1 = "The quick brown FOX";
var results = null;
shouldBe('regex0.exec(input1);', 'results');
var input2 = "What do you know about the quick brown fox?";
var results = ["the quick brown fox"];
shouldBe('regex0.exec(input2);', 'results');
var input3 = "What do you know about THE QUICK BROWN FOX?";
var results = null;
shouldBe('regex0.exec(input3);', 'results');
var regex1 = /The quick brown fox/i;
var input0 = "the quick brown fox";
var results = ["the quick brown fox"];
shouldBe('regex1.exec(input0);', 'results');
var input1 = "The quick brown FOX";
var results = ["The quick brown FOX"];
shouldBe('regex1.exec(input1);', 'results');
var input2 = "What do you know about the quick brown fox?";
var results = ["the quick brown fox"];
shouldBe('regex1.exec(input2);', 'results');
var input3 = "What do you know about THE QUICK BROWN FOX?";
var results = ["THE QUICK BROWN FOX"];
shouldBe('regex1.exec(input3);', 'results');
var regex2 = /abcd\t\n\r\f\v[\b]\071\x3b\$\\\?caxyz/;
var input0 = "abcd\t\n\r\f\v\b9;\$\\?caxyz";
var results = ["abcd\x09\x0a\x0d\x0c\x0b\x089;$\\?caxyz"];
shouldBe('regex2.exec(input0);', 'results');
var regex3 = /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/;
var input0 = "abxyzpqrrrabbxyyyypqAzz";
var results = ["abxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input0);', 'results');
var input1 = "abxyzpqrrrabbxyyyypqAzz";
var results = ["abxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input1);', 'results');
var input2 = "aabxyzpqrrrabbxyyyypqAzz";
var results = ["aabxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input2);', 'results');
var input3 = "aaabxyzpqrrrabbxyyyypqAzz";
var results = ["aaabxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input3);', 'results');
var input4 = "aaaabxyzpqrrrabbxyyyypqAzz";
var results = ["aaaabxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input4);', 'results');
var input5 = "abcxyzpqrrrabbxyyyypqAzz";
var results = ["abcxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input5);', 'results');
var input6 = "aabcxyzpqrrrabbxyyyypqAzz";
var results = ["aabcxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input6);', 'results');
var input7 = "aaabcxyzpqrrrabbxyyyypAzz";
var results = ["aaabcxyzpqrrrabbxyyyypAzz"];
shouldBe('regex3.exec(input7);', 'results');
var input8 = "aaabcxyzpqrrrabbxyyyypqAzz";
var results = ["aaabcxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input8);', 'results');
var input9 = "aaabcxyzpqrrrabbxyyyypqqAzz";
var results = ["aaabcxyzpqrrrabbxyyyypqqAzz"];
shouldBe('regex3.exec(input9);', 'results');
var input10 = "aaabcxyzpqrrrabbxyyyypqqqAzz";
var results = ["aaabcxyzpqrrrabbxyyyypqqqAzz"];
shouldBe('regex3.exec(input10);', 'results');
var input11 = "aaabcxyzpqrrrabbxyyyypqqqqAzz";
var results = ["aaabcxyzpqrrrabbxyyyypqqqqAzz"];
shouldBe('regex3.exec(input11);', 'results');
var input12 = "aaabcxyzpqrrrabbxyyyypqqqqqAzz";
var results = ["aaabcxyzpqrrrabbxyyyypqqqqqAzz"];
shouldBe('regex3.exec(input12);', 'results');
var input13 = "aaabcxyzpqrrrabbxyyyypqqqqqqAzz";
var results = ["aaabcxyzpqrrrabbxyyyypqqqqqqAzz"];
shouldBe('regex3.exec(input13);', 'results');
var input14 = "aaaabcxyzpqrrrabbxyyyypqAzz";
var results = ["aaaabcxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input14);', 'results');
var input15 = "abxyzzpqrrrabbxyyyypqAzz";
var results = ["abxyzzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input15);', 'results');
var input16 = "aabxyzzzpqrrrabbxyyyypqAzz";
var results = ["aabxyzzzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input16);', 'results');
var input17 = "aaabxyzzzzpqrrrabbxyyyypqAzz";
var results = ["aaabxyzzzzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input17);', 'results');
var input18 = "aaaabxyzzzzpqrrrabbxyyyypqAzz";
var results = ["aaaabxyzzzzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input18);', 'results');
var input19 = "abcxyzzpqrrrabbxyyyypqAzz";
var results = ["abcxyzzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input19);', 'results');
var input20 = "aabcxyzzzpqrrrabbxyyyypqAzz";
var results = ["aabcxyzzzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input20);', 'results');
var input21 = "aaabcxyzzzzpqrrrabbxyyyypqAzz";
var results = ["aaabcxyzzzzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input21);', 'results');
var input22 = "aaaabcxyzzzzpqrrrabbxyyyypqAzz";
var results = ["aaaabcxyzzzzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input22);', 'results');
var input23 = "aaaabcxyzzzzpqrrrabbbxyyyypqAzz";
var results = ["aaaabcxyzzzzpqrrrabbbxyyyypqAzz"];
shouldBe('regex3.exec(input23);', 'results');
var input24 = "aaaabcxyzzzzpqrrrabbbxyyyyypqAzz";
var results = ["aaaabcxyzzzzpqrrrabbbxyyyyypqAzz"];
shouldBe('regex3.exec(input24);', 'results');
var input25 = "aaabcxyzpqrrrabbxyyyypABzz";
var results = ["aaabcxyzpqrrrabbxyyyypABzz"];
shouldBe('regex3.exec(input25);', 'results');
var input26 = "aaabcxyzpqrrrabbxyyyypABBzz";
var results = ["aaabcxyzpqrrrabbxyyyypABBzz"];
shouldBe('regex3.exec(input26);', 'results');
var input27 = ">>>aaabxyzpqrrrabbxyyyypqAzz";
var results = ["aaabxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input27);', 'results');
var input28 = ">aaaabxyzpqrrrabbxyyyypqAzz";
var results = ["aaaabxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input28);', 'results');
var input29 = ">>>>abcxyzpqrrrabbxyyyypqAzz";
var results = ["abcxyzpqrrrabbxyyyypqAzz"];
shouldBe('regex3.exec(input29);', 'results');
// Failers
var input30 = "abxyzpqrrabbxyyyypqAzz";
var results = null;
shouldBe('regex3.exec(input30);', 'results');
var input31 = "abxyzpqrrrrabbxyyyypqAzz";
var results = null;
shouldBe('regex3.exec(input31);', 'results');
var input32 = "abxyzpqrrrabxyyyypqAzz";
var results = null;
shouldBe('regex3.exec(input32);', 'results');
var input33 = "aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz";
var results = null;
shouldBe('regex3.exec(input33);', 'results');
var input34 = "aaaabcxyzzzzpqrrrabbbxyyypqAzz";
var results = null;
shouldBe('regex3.exec(input34);', 'results');
var input35 = "aaabcxyzpqrrrabbxyyyypqqqqqqqAzz";
var results = null;
shouldBe('regex3.exec(input35);', 'results');
var regex4 = /^(abc){1,2}zz/;
var input0 = "abczz";
var results = ["abczz", "abc"];
shouldBe('regex4.exec(input0);', 'results');
var input1 = "abcabczz";
var results = ["abcabczz", "abc"];
shouldBe('regex4.exec(input1);', 'results');
// Failers
var input2 = "zz";
var results = null;
shouldBe('regex4.exec(input2);', 'results');
var input3 = "abcabcabczz";
var results = null;
shouldBe('regex4.exec(input3);', 'results');
var input4 = ">>abczz";
var results = null;
shouldBe('regex4.exec(input4);', 'results');
var regex5 = /^(b+?|a){1,2}?c/;
var input0 = "bc";
var results = ["bc", "b"];
shouldBe('regex5.exec(input0);', 'results');
var input1 = "bbc";
var results = ["bbc", "b"];
shouldBe('regex5.exec(input1);', 'results');
var input2 = "bbbc";
var results = ["bbbc", "bb"];
shouldBe('regex5.exec(input2);', 'results');
var input3 = "bac";
var results = ["bac", "a"];
shouldBe('regex5.exec(input3);', 'results');
var input4 = "bbac";
var results = ["bbac", "a"];
shouldBe('regex5.exec(input4);', 'results');
var input5 = "aac";
var results = ["aac", "a"];
shouldBe('regex5.exec(input5);', 'results');
var input6 = "abbbbbbbbbbbc";
var results = ["abbbbbbbbbbbc", "bbbbbbbbbbb"];
shouldBe('regex5.exec(input6);', 'results');
var input7 = "bbbbbbbbbbbac";
var results = ["bbbbbbbbbbbac", "a"];
shouldBe('regex5.exec(input7);', 'results');
// Failers
var input8 = "aaac";
var results = null;
shouldBe('regex5.exec(input8);', 'results');
var input9 = "abbbbbbbbbbbac";
var results = null;
shouldBe('regex5.exec(input9);', 'results');
var regex6 = /^(b+|a){1,2}c/;
var input0 = "bc";
var results = ["bc", "b"];
shouldBe('regex6.exec(input0);', 'results');
var input1 = "bbc";
var results = ["bbc", "bb"];
shouldBe('regex6.exec(input1);', 'results');
var input2 = "bbbc";
var results = ["bbbc", "bbb"];
shouldBe('regex6.exec(input2);', 'results');
var input3 = "bac";
var results = ["bac", "a"];
shouldBe('regex6.exec(input3);', 'results');
var input4 = "bbac";
var results = ["bbac", "a"];
shouldBe('regex6.exec(input4);', 'results');
var input5 = "aac";
var results = ["aac", "a"];
shouldBe('regex6.exec(input5);', 'results');
var input6 = "abbbbbbbbbbbc";
var results = ["abbbbbbbbbbbc", "bbbbbbbbbbb"];
shouldBe('regex6.exec(input6);', 'results');
var input7 = "bbbbbbbbbbbac";
var results = ["bbbbbbbbbbbac", "a"];
shouldBe('regex6.exec(input7);', 'results');
// Failers
var input8 = "aaac";
var results = null;
shouldBe('regex6.exec(input8);', 'results');
var input9 = "abbbbbbbbbbbac";
var results = null;
shouldBe('regex6.exec(input9);', 'results');
var regex7 = /^(b+|a){1,2}?bc/;
var input0 = "bbc";
var results = ["bbc", "b"];
shouldBe('regex7.exec(input0);', 'results');
var regex8 = /^(b*|ba){1,2}?bc/;
var input0 = "babc";
var results = ["babc", "ba"];
shouldBe('regex8.exec(input0);', 'results');
var input1 = "bbabc";
var results = ["bbabc", "ba"];
shouldBe('regex8.exec(input1);', 'results');
var input2 = "bababc";
var results = ["bababc", "ba"];
shouldBe('regex8.exec(input2);', 'results');
// Failers
var input3 = "bababbc";
var results = null;
shouldBe('regex8.exec(input3);', 'results');
var input4 = "babababc";
var results = null;
shouldBe('regex8.exec(input4);', 'results');
var regex9 = /^(ba|b*){1,2}?bc/;
var input0 = "babc";
var results = ["babc", "ba"];
shouldBe('regex9.exec(input0);', 'results');
var input1 = "bbabc";
var results = ["bbabc", "ba"];
shouldBe('regex9.exec(input1);', 'results');
var input2 = "bababc";
var results = ["bababc", "ba"];
shouldBe('regex9.exec(input2);', 'results');
// Failers
var input3 = "bababbc";
var results = null;
shouldBe('regex9.exec(input3);', 'results');
var input4 = "babababc";
var results = null;
shouldBe('regex9.exec(input4);', 'results');
var regex10 = /^\ca\cA/;
var input0 = "\x01\x01";
var results = ["\x01\x01"];
shouldBe('regex10.exec(input0);', 'results');
var regex11 = /^[ab\]cde]/;
var input0 = "athing";
var results = ["a"];
shouldBe('regex11.exec(input0);', 'results');
var input1 = "bthing";
var results = ["b"];
shouldBe('regex11.exec(input1);', 'results');
var input2 = "]thing";
var results = ["]"];
shouldBe('regex11.exec(input2);', 'results');
var input3 = "cthing";
var results = ["c"];
shouldBe('regex11.exec(input3);', 'results');
var input4 = "dthing";
var results = ["d"];
shouldBe('regex11.exec(input4);', 'results');
var input5 = "ething";
var results = ["e"];
shouldBe('regex11.exec(input5);', 'results');
// Failers
var input6 = "fthing";
var results = null;
shouldBe('regex11.exec(input6);', 'results');
var input7 = "[thing";
var results = null;
shouldBe('regex11.exec(input7);', 'results');
var input8 = "\\thing";
var results = null;
shouldBe('regex11.exec(input8);', 'results');
var regex12 = /^[\]cde]/;
var input0 = "]thing";
var results = ["]"];
shouldBe('regex12.exec(input0);', 'results');
var input1 = "cthing";
var results = ["c"];
shouldBe('regex12.exec(input1);', 'results');
var input2 = "dthing";
var results = ["d"];
shouldBe('regex12.exec(input2);', 'results');
var input3 = "ething";
var results = ["e"];
shouldBe('regex12.exec(input3);', 'results');
// Failers
var input4 = "athing";
var results = null;
shouldBe('regex12.exec(input4);', 'results');
var input5 = "fthing";
var results = null;
shouldBe('regex12.exec(input5);', 'results');
var regex13 = /^[^ab\]cde]/;
var input0 = "fthing";
var results = ["f"];
shouldBe('regex13.exec(input0);', 'results');
var input1 = "[thing";
var results = ["["];
shouldBe('regex13.exec(input1);', 'results');
var input2 = "\\thing";
var results = ["\\"];
shouldBe('regex13.exec(input2);', 'results');
// Failers
var input3 = "athing";
var results = null;
shouldBe('regex13.exec(input3);', 'results');
var input4 = "bthing";
var results = null;
shouldBe('regex13.exec(input4);', 'results');
var input5 = "]thing";
var results = null;
shouldBe('regex13.exec(input5);', 'results');
var input6 = "cthing";
var results = null;
shouldBe('regex13.exec(input6);', 'results');
var input7 = "dthing";
var results = null;
shouldBe('regex13.exec(input7);', 'results');
var input8 = "ething";
var results = null;
shouldBe('regex13.exec(input8);', 'results');
var regex14 = /^[^\]cde]/;
var input0 = "athing";
var results = ["a"];
shouldBe('regex14.exec(input0);', 'results');
var input1 = "fthing";
var results = ["f"];
shouldBe('regex14.exec(input1);', 'results');
// Failers
var input2 = "]thing";
var results = null;
shouldBe('regex14.exec(input2);', 'results');
var input3 = "cthing";
var results = null;
shouldBe('regex14.exec(input3);', 'results');
var input4 = "dthing";
var results = null;
shouldBe('regex14.exec(input4);', 'results');
var input5 = "ething";
var results = null;
shouldBe('regex14.exec(input5);', 'results');
var regex15 = /^\xc2/;
var input0 = "\xc2";
var results = ["\xc2"];
shouldBe('regex15.exec(input0);', 'results');
var regex16 = /^\xc3/;
var input0 = "\xc3";
var results = ["\xc3"];
shouldBe('regex16.exec(input0);', 'results');
var regex17 = /^[0-9]+$/;
var input0 = "0";
var results = ["0"];
shouldBe('regex17.exec(input0);', 'results');
var input1 = "1";
var results = ["1"];
shouldBe('regex17.exec(input1);', 'results');
var input2 = "2";
var results = ["2"];
shouldBe('regex17.exec(input2);', 'results');
var input3 = "3";
var results = ["3"];
shouldBe('regex17.exec(input3);', 'results');
var input4 = "4";
var results = ["4"];
shouldBe('regex17.exec(input4);', 'results');
var input5 = "5";
var results = ["5"];
shouldBe('regex17.exec(input5);', 'results');
var input6 = "6";
var results = ["6"];
shouldBe('regex17.exec(input6);', 'results');
var input7 = "7";
var results = ["7"];
shouldBe('regex17.exec(input7);', 'results');
var input8 = "8";
var results = ["8"];
shouldBe('regex17.exec(input8);', 'results');
var input9 = "9";
var results = ["9"];
shouldBe('regex17.exec(input9);', 'results');
var input10 = "10";
var results = ["10"];
shouldBe('regex17.exec(input10);', 'results');
var input11 = "100";
var results = ["100"];
shouldBe('regex17.exec(input11);', 'results');
// Failers
var input12 = "abc";
var results = null;
shouldBe('regex17.exec(input12);', 'results');
var regex18 = /^.*nter/;
var input0 = "enter";
var results = ["enter"];
shouldBe('regex18.exec(input0);', 'results');
var input1 = "inter";
var results = ["inter"];
shouldBe('regex18.exec(input1);', 'results');
var input2 = "uponter";
var results = ["uponter"];
shouldBe('regex18.exec(input2);', 'results');
var regex19 = /^xxx[0-9]+$/;
var input0 = "xxx0";
var results = ["xxx0"];
shouldBe('regex19.exec(input0);', 'results');
var input1 = "xxx1234";
var results = ["xxx1234"];
shouldBe('regex19.exec(input1);', 'results');
// Failers
var input2 = "xxx";
var results = null;
shouldBe('regex19.exec(input2);', 'results');
var regex20 = /^.+[0-9][0-9][0-9]$/;
var input0 = "x123";
var results = ["x123"];
shouldBe('regex20.exec(input0);', 'results');
var input1 = "xx123";
var results = ["xx123"];
shouldBe('regex20.exec(input1);', 'results');
var input2 = "123456";
var results = ["123456"];
shouldBe('regex20.exec(input2);', 'results');
// Failers
var input3 = "123";
var results = null;
shouldBe('regex20.exec(input3);', 'results');
var input4 = "x1234";
var results = ["x1234"];
shouldBe('regex20.exec(input4);', 'results');
var regex21 = /^.+?[0-9][0-9][0-9]$/;
var input0 = "x123";
var results = ["x123"];
shouldBe('regex21.exec(input0);', 'results');
var input1 = "xx123";
var results = ["xx123"];
shouldBe('regex21.exec(input1);', 'results');
var input2 = "123456";
var results = ["123456"];
shouldBe('regex21.exec(input2);', 'results');
// Failers
var input3 = "123";
var results = null;
shouldBe('regex21.exec(input3);', 'results');
var input4 = "x1234";
var results = ["x1234"];
shouldBe('regex21.exec(input4);', 'results');
var regex22 = /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/;
var input0 = "abc!pqr=apquxz.ixr.zzz.ac.uk";
var results = ["abc!pqr=apquxz.ixr.zzz.ac.uk", "abc", "pqr"];
shouldBe('regex22.exec(input0);', 'results');
// Failers
var input1 = "!pqr=apquxz.ixr.zzz.ac.uk";
var results = null;
shouldBe('regex22.exec(input1);', 'results');
var input2 = "abc!=apquxz.ixr.zzz.ac.uk";
var results = null;
shouldBe('regex22.exec(input2);', 'results');
var input3 = "abc!pqr=apquxz:ixr.zzz.ac.uk";
var results = null;
shouldBe('regex22.exec(input3);', 'results');
var input4 = "abc!pqr=apquxz.ixr.zzz.ac.ukk";
var results = null;
shouldBe('regex22.exec(input4);', 'results');
var regex23 = /:/;
var input0 = "Well, we need a colon: somewhere";
var results = [":"];
shouldBe('regex23.exec(input0);', 'results');
var input1 = "*** Fail if we don't";
var results = null;
shouldBe('regex23.exec(input1);', 'results');
var regex24 = /([\da-f:]+)$/i;
var input0 = "0abc";
var results = ["0abc", "0abc"];
shouldBe('regex24.exec(input0);', 'results');
var input1 = "abc";
var results = ["abc", "abc"];
shouldBe('regex24.exec(input1);', 'results');
var input2 = "fed";
var results = ["fed", "fed"];
shouldBe('regex24.exec(input2);', 'results');
var input3 = "E";
var results = ["E", "E"];
shouldBe('regex24.exec(input3);', 'results');
var input4 = "::";
var results = ["::", "::"];
shouldBe('regex24.exec(input4);', 'results');
var input5 = "5f03:12C0::932e";
var results = ["5f03:12C0::932e", "5f03:12C0::932e"];
shouldBe('regex24.exec(input5);', 'results');
var input6 = "fed def";
var results = ["def", "def"];
shouldBe('regex24.exec(input6);', 'results');
var input7 = "Any old stuff";
var results = ["ff", "ff"];
shouldBe('regex24.exec(input7);', 'results');
// Failers
var input8 = "0zzz";
var results = null;
shouldBe('regex24.exec(input8);', 'results');
var input9 = "gzzz";
var results = null;
shouldBe('regex24.exec(input9);', 'results');
var input10 = "fed\x20";
var results = null;
shouldBe('regex24.exec(input10);', 'results');
var input11 = "Any old rubbish";
var results = null;
shouldBe('regex24.exec(input11);', 'results');
var regex25 = /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
var input0 = ".1.2.3";
var results = [".1.2.3", "1", "2", "3"];
shouldBe('regex25.exec(input0);', 'results');
var input1 = "A.12.123.0";
var results = ["A.12.123.0", "12", "123", "0"];
shouldBe('regex25.exec(input1);', 'results');
// Failers
var input2 = ".1.2.3333";
var results = null;
shouldBe('regex25.exec(input2);', 'results');
var input3 = "1.2.3";
var results = null;
shouldBe('regex25.exec(input3);', 'results');
var input4 = "1234.2.3";
var results = null;
shouldBe('regex25.exec(input4);', 'results');
var regex26 = /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/;
var input0 = "1 IN SOA non-sp1 non-sp2(";
var results = ["1 IN SOA non-sp1 non-sp2(", "1", "non-sp1", "non-sp2"];
shouldBe('regex26.exec(input0);', 'results');
var input1 = "1 IN SOA non-sp1 non-sp2 (";
var results = ["1 IN SOA non-sp1 non-sp2 (", "1", "non-sp1", "non-sp2"];
shouldBe('regex26.exec(input1);', 'results');
// Failers
var input2 = "1IN SOA non-sp1 non-sp2(";
var results = null;
shouldBe('regex26.exec(input2);', 'results');
var regex27 = /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/;
var input0 = "a.";
var results = ["a.", undefined];
shouldBe('regex27.exec(input0);', 'results');
var input1 = "Z.";
var results = ["Z.", undefined];
shouldBe('regex27.exec(input1);', 'results');
var input2 = "2.";
var results = ["2.", undefined];
shouldBe('regex27.exec(input2);', 'results');
var input3 = "ab-c.pq-r.";
var results = ["ab-c.pq-r.", ".pq-r"];
shouldBe('regex27.exec(input3);', 'results');
var input4 = "sxk.zzz.ac.uk.";
var results = ["sxk.zzz.ac.uk.", ".uk"];
shouldBe('regex27.exec(input4);', 'results');
var input5 = "x-.y-.";
var results = ["x-.y-.", ".y-"];
shouldBe('regex27.exec(input5);', 'results');
// Failers
var input6 = "-abc.peq.";
var results = null;
shouldBe('regex27.exec(input6);', 'results');
var regex28 = /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/;
var input0 = "*.a";
var results = ["*.a", undefined, undefined, undefined];
shouldBe('regex28.exec(input0);', 'results');
var input1 = "*.b0-a";
var results = ["*.b0-a", "0-a", undefined, undefined];
shouldBe('regex28.exec(input1);', 'results');
var input2 = "*.c3-b.c";
var results = ["*.c3-b.c", "3-b", ".c", undefined];
shouldBe('regex28.exec(input2);', 'results');
var input3 = "*.c-a.b-c";
var results = ["*.c-a.b-c", "-a", ".b-c", "-c"];
shouldBe('regex28.exec(input3);', 'results');
// Failers
var input4 = "*.0";
var results = null;
shouldBe('regex28.exec(input4);', 'results');
var input5 = "*.a-";
var results = null;
shouldBe('regex28.exec(input5);', 'results');
var input6 = "*.a-b.c-";
var results = null;
shouldBe('regex28.exec(input6);', 'results');
var input7 = "*.c-a.0-c";
var results = null;
shouldBe('regex28.exec(input7);', 'results');
var regex29 = /^(?=ab(de))(abd)(e)/;
var input0 = "abde";
var results = ["abde", "de", "abd", "e"];
shouldBe('regex29.exec(input0);', 'results');
var regex30 = /^(?!(ab)de|x)(abd)(f)/;
var input0 = "abdf";
var results = ["abdf", undefined, "abd", "f"];
shouldBe('regex30.exec(input0);', 'results');
var regex31 = /^(?=(ab(cd)))(ab)/;
var input0 = "abcd";
var results = ["ab", "abcd", "cd", "ab"];
shouldBe('regex31.exec(input0);', 'results');
var regex32 = /^[\da-f](\.[\da-f])*$/i;
var input0 = "a.b.c.d";
var results = ["a.b.c.d", ".d"];
shouldBe('regex32.exec(input0);', 'results');
var input1 = "A.B.C.D";
var results = ["A.B.C.D", ".D"];
shouldBe('regex32.exec(input1);', 'results');
var input2 = "a.b.c.1.2.3.C";
var results = ["a.b.c.1.2.3.C", ".C"];
shouldBe('regex32.exec(input2);', 'results');
var regex33 = /^\".*\"\s*(;.*)?$/;
var input0 = "\"1234\"";
var results = ["\"1234\"", undefined];
shouldBe('regex33.exec(input0);', 'results');
var input1 = "\"abcd\" ;";
var results = ["\"abcd\" ;", ";"];
shouldBe('regex33.exec(input1);', 'results');
var input2 = "\"\" ; rhubarb";
var results = ["\"\" ; rhubarb", "; rhubarb"];
shouldBe('regex33.exec(input2);', 'results');
// Failers
var input3 = "\"1234\" : things";
var results = null;
shouldBe('regex33.exec(input3);', 'results');
var regex34 = /^$/;
var input0 = "";
var results = [""];
shouldBe('regex34.exec(input0);', 'results');
var regex35 = /^a\ b[c ]d$/;
var input0 = "a bcd";
var results = ["a bcd"];
shouldBe('regex35.exec(input0);', 'results');
var input1 = "a b d";
var results = ["a b d"];
shouldBe('regex35.exec(input1);', 'results');
var input2 = "abcd";
var results = null;
shouldBe('regex35.exec(input2);', 'results');
var input3 = "ab d";
var results = null;
shouldBe('regex35.exec(input3);', 'results');
var regex36 = /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/;
var input0 = "abcdefhijklm";
var results = ["abcdefhijklm", "abc", "bc", "c", "def", "ef", "f", "hij", "ij", "j", "klm", "lm", "m"];
shouldBe('regex36.exec(input0);', 'results');
var regex37 = /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/;
var input0 = "abcdefhijklm";
var results = ["abcdefhijklm", "bc", "c", "ef", "f", "ij", "j", "lm", "m"];
shouldBe('regex37.exec(input0);', 'results');
var regex38 = /^[\w][\W][\s][\S][\d][\D][\n][\cc][\022]/;
var input0 = "a+ Z0+\n\x03\x12";
var results = ["a+ Z0+\x0a\x03\x12"];
shouldBe('regex38.exec(input0);', 'results');
var regex39 = /^[.^$|()*+?{,}]+/;
var input0 = ".^\$(*+)|{?,?}";
var results = [".^$(*+)|{?,?}"];
shouldBe('regex39.exec(input0);', 'results');
var regex40 = /^a*\w/;
var input0 = "z";
var results = ["z"];
shouldBe('regex40.exec(input0);', 'results');
var input1 = "az";
var results = ["az"];
shouldBe('regex40.exec(input1);', 'results');
var input2 = "aaaz";
var results = ["aaaz"];
shouldBe('regex40.exec(input2);', 'results');
var input3 = "a";
var results = ["a"];
shouldBe('regex40.exec(input3);', 'results');
var input4 = "aa";
var results = ["aa"];
shouldBe('regex40.exec(input4);', 'results');
var input5 = "aaaa";
var results = ["aaaa"];
shouldBe('regex40.exec(input5);', 'results');
var input6 = "a+";
var results = ["a"];
shouldBe('regex40.exec(input6);', 'results');
var input7 = "aa+";
var results = ["aa"];
shouldBe('regex40.exec(input7);', 'results');
var regex41 = /^a*?\w/;
var input0 = "z";
var results = ["z"];
shouldBe('regex41.exec(input0);', 'results');
var input1 = "az";
var results = ["a"];
shouldBe('regex41.exec(input1);', 'results');
var input2 = "aaaz";
var results = ["a"];
shouldBe('regex41.exec(input2);', 'results');
var input3 = "a";
var results = ["a"];
shouldBe('regex41.exec(input3);', 'results');
var input4 = "aa";
var results = ["a"];
shouldBe('regex41.exec(input4);', 'results');
var input5 = "aaaa";
var results = ["a"];
shouldBe('regex41.exec(input5);', 'results');
var input6 = "a+";
var results = ["a"];
shouldBe('regex41.exec(input6);', 'results');
var input7 = "aa+";
var results = ["a"];
shouldBe('regex41.exec(input7);', 'results');
var regex42 = /^a+\w/;
var input0 = "az";
var results = ["az"];
shouldBe('regex42.exec(input0);', 'results');
var input1 = "aaaz";
var results = ["aaaz"];
shouldBe('regex42.exec(input1);', 'results');
var input2 = "aa";
var results = ["aa"];
shouldBe('regex42.exec(input2);', 'results');
var input3 = "aaaa";
var results = ["aaaa"];
shouldBe('regex42.exec(input3);', 'results');
var input4 = "aa+";
var results = ["aa"];
shouldBe('regex42.exec(input4);', 'results');
var regex43 = /^a+?\w/;
var input0 = "az";
var results = ["az"];
shouldBe('regex43.exec(input0);', 'results');
var input1 = "aaaz";
var results = ["aa"];
shouldBe('regex43.exec(input1);', 'results');
var input2 = "aa";
var results = ["aa"];
shouldBe('regex43.exec(input2);', 'results');
var input3 = "aaaa";
var results = ["aa"];
shouldBe('regex43.exec(input3);', 'results');
var input4 = "aa+";
var results = ["aa"];
shouldBe('regex43.exec(input4);', 'results');
var regex44 = /^\d{8}\w{2,}/;
var input0 = "1234567890";
var results = ["1234567890"];
shouldBe('regex44.exec(input0);', 'results');
var input1 = "12345678ab";
var results = ["12345678ab"];
shouldBe('regex44.exec(input1);', 'results');
var input2 = "12345678__";
var results = ["12345678__"];
shouldBe('regex44.exec(input2);', 'results');
// Failers
var input3 = "1234567";
var results = null;
shouldBe('regex44.exec(input3);', 'results');
var regex45 = /^[aeiou\d]{4,5}$/;
var input0 = "uoie";
var results = ["uoie"];
shouldBe('regex45.exec(input0);', 'results');
var input1 = "1234";
var results = ["1234"];
shouldBe('regex45.exec(input1);', 'results');
var input2 = "12345";
var results = ["12345"];
shouldBe('regex45.exec(input2);', 'results');
var input3 = "aaaaa";
var results = ["aaaaa"];
shouldBe('regex45.exec(input3);', 'results');
// Failers
var input4 = "123456";
var results = null;
shouldBe('regex45.exec(input4);', 'results');
var regex46 = /^[aeiou\d]{4,5}?/;
var input0 = "uoie";
var results = ["uoie"];
shouldBe('regex46.exec(input0);', 'results');
var input1 = "1234";
var results = ["1234"];
shouldBe('regex46.exec(input1);', 'results');
var input2 = "12345";
var results = ["1234"];
shouldBe('regex46.exec(input2);', 'results');
var input3 = "aaaaa";
var results = ["aaaa"];
shouldBe('regex46.exec(input3);', 'results');
var input4 = "123456";
var results = ["1234"];
shouldBe('regex46.exec(input4);', 'results');
var regex47 = /^(abc|def)=(\1){2,3}$/;
var input0 = "abc=abcabc";
var results = ["abc=abcabc", "abc", "abc"];
shouldBe('regex47.exec(input0);', 'results');
var input1 = "def=defdefdef";
var results = ["def=defdefdef", "def", "def"];
shouldBe('regex47.exec(input1);', 'results');
// Failers
var input2 = "abc=defdef";
var results = null;
shouldBe('regex47.exec(input2);', 'results');
var regex48 = /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?:)2$/;
var input0 = "abcdefghijkcda2";
var results = ["abcdefghijkcda2", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "cd"];
shouldBe('regex48.exec(input0);', 'results');
var input1 = "abcdefghijkkkkcda2";
var results = ["abcdefghijkkkkcda2", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "cd"];
shouldBe('regex48.exec(input1);', 'results');
var regex49 = /(cat(a(ract|tonic)|erpillar)) \1()2(3)/;
var input0 = "cataract cataract23";
var results = ["cataract cataract23", "cataract", "aract", "ract", "", "3"];
shouldBe('regex49.exec(input0);', 'results');
var input1 = "catatonic catatonic23";
var results = ["catatonic catatonic23", "catatonic", "atonic", "tonic", "", "3"];
shouldBe('regex49.exec(input1);', 'results');
var input2 = "caterpillar caterpillar23";
var results = ["caterpillar caterpillar23", "caterpillar", "erpillar", undefined, "", "3"];
shouldBe('regex49.exec(input2);', 'results');
var regex50 = /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/;
var input0 = "From abcd Mon Sep 01 12:33:02 1997";
var results = ["From abcd Mon Sep 01 12:33", "abcd"];
shouldBe('regex50.exec(input0);', 'results');
var regex51 = /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/;
var input0 = "From abcd Mon Sep 01 12:33:02 1997";
var results = ["From abcd Mon Sep 01 12:33", "Sep "];
shouldBe('regex51.exec(input0);', 'results');
var input1 = "From abcd Mon Sep 1 12:33:02 1997";
var results = ["From abcd Mon Sep 1 12:33", "Sep "];
shouldBe('regex51.exec(input1);', 'results');
// Failers
var input2 = "From abcd Sep 01 12:33:02 1997";
var results = null;
shouldBe('regex51.exec(input2);', 'results');
var regex52 = /^12.34/;
// Failers
var input0 = "12\n34";
var results = null;
shouldBe('regex52.exec(input0);', 'results');
var input1 = "12\r34";
var results = null;
shouldBe('regex52.exec(input1);', 'results');
var regex53 = /\w+(?=\t)/;
var input0 = "the quick brown\t fox";
var results = ["brown"];
shouldBe('regex53.exec(input0);', 'results');
var regex54 = /foo(?!bar)(.*)/;
var input0 = "foobar is foolish see?";
var results = ["foolish see?", "lish see?"];
shouldBe('regex54.exec(input0);', 'results');
var regex55 = /(?:(?!foo)...|^.{0,2})bar(.*)/;
var input0 = "foobar crowbar etc";
var results = ["rowbar etc", " etc"];
shouldBe('regex55.exec(input0);', 'results');
var input1 = "barrel";
var results = ["barrel", "rel"];
shouldBe('regex55.exec(input1);', 'results');
var input2 = "2barrel";
var results = ["2barrel", "rel"];
shouldBe('regex55.exec(input2);', 'results');
var input3 = "A barrel";
var results = ["A barrel", "rel"];
shouldBe('regex55.exec(input3);', 'results');
var regex56 = /^(\D*)(?=\d)(?!123)/;
var input0 = "abc456";
var results = ["abc", "abc"];
shouldBe('regex56.exec(input0);', 'results');
// Failers
var input1 = "abc123";
var results = null;
shouldBe('regex56.exec(input1);', 'results');
var regex57 = /^(a)\1{2,3}(.)/;
var input0 = "aaab";
var results = ["aaab", "a", "b"];
shouldBe('regex57.exec(input0);', 'results');
var input1 = "aaaab";
var results = ["aaaab", "a", "b"];
shouldBe('regex57.exec(input1);', 'results');
var input2 = "aaaaab";
var results = ["aaaaa", "a", "a"];
shouldBe('regex57.exec(input2);', 'results');
var input3 = "aaaaaab";
var results = ["aaaaa", "a", "a"];
shouldBe('regex57.exec(input3);', 'results');
var regex58 = /(?!^)abc/;
var input0 = "the abc";
var results = ["abc"];
shouldBe('regex58.exec(input0);', 'results');
// Failers
var input1 = "abc";
var results = null;
shouldBe('regex58.exec(input1);', 'results');
var regex59 = /(?=^)abc/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex59.exec(input0);', 'results');
// Failers
var input1 = "the abc";
var results = null;
shouldBe('regex59.exec(input1);', 'results');
var regex60 = /^[ab]{1,3}(ab*|b)/;
var input0 = "aabbbbb";
var results = ["aabb", "b"];
shouldBe('regex60.exec(input0);', 'results');
var regex61 = /^[ab]{1,3}?(ab*|b)/;
var input0 = "aabbbbb";
var results = ["aabbbbb", "abbbbb"];
shouldBe('regex61.exec(input0);', 'results');
var regex62 = /^[ab]{1,3}?(ab*?|b)/;
var input0 = "aabbbbb";
var results = ["aa", "a"];
shouldBe('regex62.exec(input0);', 'results');
var regex63 = /^[ab]{1,3}(ab*?|b)/;
var input0 = "aabbbbb";
var results = ["aabb", "b"];
shouldBe('regex63.exec(input0);', 'results');
var regex64 = /abc\0def\00pqr\000xyz\0000AB/;
var input0 = "abc\0def\0pqr\0xyz\0" + "0AB";
var results = ["abc\0def\0pqr\0xyz\0" + "0AB"];
shouldBe('regex64.exec(input0);', 'results');
var input1 = "abc456 abc\0def\0pqr\0xyz\0" + "0ABCDE";
var results = ["abc\0def\0pqr\0xyz\0" + "0AB"];
shouldBe('regex64.exec(input1);', 'results');
var regex65 = /abc\x0def\x00pqr\x000xyz\x0000AB/;
var input0 = "abc\x0def\x00pqr\x000xyz\x0000AB";
var results = ["abc\x0def\x00pqr\x000xyz\x0000AB"];
shouldBe('regex65.exec(input0);', 'results');
var input1 = "abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE";
var results = ["abc\x0def\x00pqr\x000xyz\x0000AB"];
shouldBe('regex65.exec(input1);', 'results');
var regex66 = /^[\000-\037]/;
var input0 = "\0A";
var results = ["\x00"];
shouldBe('regex66.exec(input0);', 'results');
var input1 = "\01B";
var results = ["\x01"];
shouldBe('regex66.exec(input1);', 'results');
var input2 = "\037C";
var results = ["\x1f"];
shouldBe('regex66.exec(input2);', 'results');
var regex67 = /\0*/;
var input0 = "\0\0\0\0";
var results = ["\x00\x00\x00\x00"];
shouldBe('regex67.exec(input0);', 'results');
var regex68 = /A\0{2,3}Z/;
var input0 = "The A\0\0Z";
var results = ["A\x00\x00Z"];
shouldBe('regex68.exec(input0);', 'results');
var input1 = "An A\0\0\0Z";
var results = ["A\x00\x00\x00Z"];
shouldBe('regex68.exec(input1);', 'results');
// Failers
var input2 = "A\0Z";
var results = null;
shouldBe('regex68.exec(input2);', 'results');
var input3 = "A\0\0\0\0Z";
var results = null;
shouldBe('regex68.exec(input3);', 'results');
var regex69 = /^(cow|)\1(bell)/;
var input0 = "cowcowbell";
var results = ["cowcowbell", "cow", "bell"];
shouldBe('regex69.exec(input0);', 'results');
var input1 = "bell";
var results = ["bell", "", "bell"];
shouldBe('regex69.exec(input1);', 'results');
// Failers
var input2 = "cowbell";
var results = null;
shouldBe('regex69.exec(input2);', 'results');
var regex70 = /^\s/;
var input0 = "\040abc";
var results = [" "];
shouldBe('regex70.exec(input0);', 'results');
var input1 = "\x0cabc";
var results = ["\x0c"];
shouldBe('regex70.exec(input1);', 'results');
var input2 = "\nabc";
var results = ["\x0a"];
shouldBe('regex70.exec(input2);', 'results');
var input3 = "\rabc";
var results = ["\x0d"];
shouldBe('regex70.exec(input3);', 'results');
var input4 = "\tabc";
var results = ["\x09"];
shouldBe('regex70.exec(input4);', 'results');
// Failers
var input5 = "abc";
var results = null;
shouldBe('regex70.exec(input5);', 'results');
var regex71 = /^(a|)\1*b/;
var input0 = "ab";
var results = ["ab", "a"];
shouldBe('regex71.exec(input0);', 'results');
var input1 = "aaaab";
var results = ["aaaab", "a"];
shouldBe('regex71.exec(input1);', 'results');
var input2 = "b";
var results = ["b", ""];
shouldBe('regex71.exec(input2);', 'results');
// Failers
var input3 = "acb";
var results = null;
shouldBe('regex71.exec(input3);', 'results');
var regex72 = /^(a|)\1+b/;
var input0 = "aab";
var results = ["aab", "a"];
shouldBe('regex72.exec(input0);', 'results');
var input1 = "aaaab";
var results = ["aaaab", "a"];
shouldBe('regex72.exec(input1);', 'results');
var input2 = "b";
var results = ["b", ""];
shouldBe('regex72.exec(input2);', 'results');
// Failers
var input3 = "ab";
var results = null;
shouldBe('regex72.exec(input3);', 'results');
var regex73 = /^(a|)\1?b/;
var input0 = "ab";
var results = ["ab", "a"];
shouldBe('regex73.exec(input0);', 'results');
var input1 = "aab";
var results = ["aab", "a"];
shouldBe('regex73.exec(input1);', 'results');
var input2 = "b";
var results = ["b", ""];
shouldBe('regex73.exec(input2);', 'results');
// Failers
var input3 = "acb";
var results = null;
shouldBe('regex73.exec(input3);', 'results');
var regex74 = /^(a|)\1{2}b/;
var input0 = "aaab";
var results = ["aaab", "a"];
shouldBe('regex74.exec(input0);', 'results');
var input1 = "b";
var results = ["b", ""];
shouldBe('regex74.exec(input1);', 'results');
// Failers
var input2 = "ab";
var results = null;
shouldBe('regex74.exec(input2);', 'results');
var input3 = "aab";
var results = null;
shouldBe('regex74.exec(input3);', 'results');
var input4 = "aaaab";
var results = null;
shouldBe('regex74.exec(input4);', 'results');
var regex75 = /^(a|)\1{2,3}b/;
var input0 = "aaab";
var results = ["aaab", "a"];
shouldBe('regex75.exec(input0);', 'results');
var input1 = "aaaab";
var results = ["aaaab", "a"];
shouldBe('regex75.exec(input1);', 'results');
var input2 = "b";
var results = ["b", ""];
shouldBe('regex75.exec(input2);', 'results');
// Failers
var input3 = "ab";
var results = null;
shouldBe('regex75.exec(input3);', 'results');
var input4 = "aab";
var results = null;
shouldBe('regex75.exec(input4);', 'results');
var input5 = "aaaaab";
var results = null;
shouldBe('regex75.exec(input5);', 'results');
var regex76 = /ab{1,3}bc/;
var input0 = "abbbbc";
var results = ["abbbbc"];
shouldBe('regex76.exec(input0);', 'results');
var input1 = "abbbc";
var results = ["abbbc"];
shouldBe('regex76.exec(input1);', 'results');
var input2 = "abbc";
var results = ["abbc"];
shouldBe('regex76.exec(input2);', 'results');
// Failers
var input3 = "abc";
var results = null;
shouldBe('regex76.exec(input3);', 'results');
var input4 = "abbbbbc";
var results = null;
shouldBe('regex76.exec(input4);', 'results');
var regex77 = /([^.]*)\.([^:]*):[T ]+(.*)/;
var input0 = "track1.title:TBlah blah blah";
var results = ["track1.title:TBlah blah blah", "track1", "title", "Blah blah blah"];
shouldBe('regex77.exec(input0);', 'results');
var regex78 = /([^.]*)\.([^:]*):[T ]+(.*)/i;
var input0 = "track1.title:TBlah blah blah";
var results = ["track1.title:TBlah blah blah", "track1", "title", "Blah blah blah"];
shouldBe('regex78.exec(input0);', 'results');
var regex79 = /([^.]*)\.([^:]*):[t ]+(.*)/i;
var input0 = "track1.title:TBlah blah blah";
var results = ["track1.title:TBlah blah blah", "track1", "title", "Blah blah blah"];
shouldBe('regex79.exec(input0);', 'results');
var regex80 = /^[W-c]+$/;
var input0 = "WXY_^abc";
var results = ["WXY_^abc"];
shouldBe('regex80.exec(input0);', 'results');
// Failers
var input1 = "wxy";
var results = null;
shouldBe('regex80.exec(input1);', 'results');
var regex81 = /^[W-c]+$/i;
var input0 = "WXY_^abc";
var results = ["WXY_^abc"];
shouldBe('regex81.exec(input0);', 'results');
var input1 = "wxy_^ABC";
var results = ["wxy_^ABC"];
shouldBe('regex81.exec(input1);', 'results');
var regex82 = /^[\x3f-\x5F]+$/i;
var input0 = "WXY_^abc";
var results = ["WXY_^abc"];
shouldBe('regex82.exec(input0);', 'results');
var input1 = "wxy_^ABC";
var results = ["wxy_^ABC"];
shouldBe('regex82.exec(input1);', 'results');
var regex83 = /^abc$/m;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex83.exec(input0);', 'results');
var input1 = "qqq\nabc";
var results = ["abc"];
shouldBe('regex83.exec(input1);', 'results');
var input2 = "abc\nzzz";
var results = ["abc"];
shouldBe('regex83.exec(input2);', 'results');
var input3 = "qqq\nabc\nzzz";
var results = ["abc"];
shouldBe('regex83.exec(input3);', 'results');
var regex84 = /^abc$/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex84.exec(input0);', 'results');
var input1 = "abbbbc";
var results = null;
shouldBe('regex84.exec(input1);', 'results');
var input2 = "abcc";
var results = null;
shouldBe('regex84.exec(input2);', 'results');
var input3 = "qqq\nabc";
var results = null;
shouldBe('regex84.exec(input3);', 'results');
var input4 = "abc\nzzz";
var results = null;
shouldBe('regex84.exec(input4);', 'results');
var input5 = "qqq\nabc\nzzz";
var results = null;
shouldBe('regex84.exec(input5);', 'results');
var regex85 = /^abc$/m;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex85.exec(input0);', 'results');
var input1 = "abc\n";
var results = ["abc"];
shouldBe('regex85.exec(input1);', 'results');
var input2 = "qqq\nabc";
var results = ["abc"];
shouldBe('regex85.exec(input2);', 'results');
var input3 = "abc\nzzz";
var results = ["abc"];
shouldBe('regex85.exec(input3);', 'results');
var input4 = "qqq\nabc\nzzz";
var results = ["abc"];
shouldBe('regex85.exec(input4);', 'results');
var regex86 = /^([\w\W])*$/;
var input0 = "abc\ndef";
var results = ["abc\x0adef", "f"];
shouldBe('regex86.exec(input0);', 'results');
var regex87 = /^(.)*$/m;
var input0 = "abc\ndef";
var results = ["abc", "c"];
shouldBe('regex87.exec(input0);', 'results');
var regex88 = /(?:b)|(?::+)/;
var input0 = "b::c";
var results = ["b"];
shouldBe('regex88.exec(input0);', 'results');
var input1 = "c::b";
var results = ["::"];
shouldBe('regex88.exec(input1);', 'results');
var regex89 = /[-az]+/;
var input0 = "az-";
var results = ["az-"];
shouldBe('regex89.exec(input0);', 'results');
// Failers
var input1 = "b";
var results = null;
shouldBe('regex89.exec(input1);', 'results');
var regex90 = /[az-]+/;
var input0 = "za-";
var results = ["za-"];
shouldBe('regex90.exec(input0);', 'results');
// Failers
var input1 = "b";
var results = null;
shouldBe('regex90.exec(input1);', 'results');
var regex91 = /[a\-z]+/;
var input0 = "a-z";
var results = ["a-z"];
shouldBe('regex91.exec(input0);', 'results');
// Failers
var input1 = "b";
var results = null;
shouldBe('regex91.exec(input1);', 'results');
var regex92 = /[a-z]+/;
var input0 = "abcdxyz";
var results = ["abcdxyz"];
shouldBe('regex92.exec(input0);', 'results');
var regex93 = /[\d-]+/;
var input0 = "12-34";
var results = ["12-34"];
shouldBe('regex93.exec(input0);', 'results');
// Failers
var input1 = "aaa";
var results = null;
shouldBe('regex93.exec(input1);', 'results');
var regex94 = /[\d-z]+/;
var input0 = "12-34z";
var results = ["12-34z"];
shouldBe('regex94.exec(input0);', 'results');
// Failers
var input1 = "aaa";
var results = null;
shouldBe('regex94.exec(input1);', 'results');
var regex95 = /\x5c/;
var input0 = "\\";
var results = ["\\"];
shouldBe('regex95.exec(input0);', 'results');
var regex96 = /\x20Z/;
var input0 = "the Zoo";
var results = [" Z"];
shouldBe('regex96.exec(input0);', 'results');
// Failers
var input1 = "Zulu";
var results = null;
shouldBe('regex96.exec(input1);', 'results');
var regex97 = /(abc)\1/i;
var input0 = "abcabc";
var results = ["abcabc", "abc"];
shouldBe('regex97.exec(input0);', 'results');
var input1 = "ABCabc";
var results = ["ABCabc", "ABC"];
shouldBe('regex97.exec(input1);', 'results');
var input2 = "abcABC";
var results = ["abcABC", "abc"];
shouldBe('regex97.exec(input2);', 'results');
var regex98 = /ab{3cd/;
var input0 = "ab{3cd";
var results = ["ab{3cd"];
shouldBe('regex98.exec(input0);', 'results');
var regex99 = /ab{3,cd/;
var input0 = "ab{3,cd";
var results = ["ab{3,cd"];
shouldBe('regex99.exec(input0);', 'results');
var regex100 = /ab{3,4a}cd/;
var input0 = "ab{3,4a}cd";
var results = ["ab{3,4a}cd"];
shouldBe('regex100.exec(input0);', 'results');
var regex101 = /{4,5a}bc/;
var input0 = "{4,5a}bc";
var results = ["{4,5a}bc"];
shouldBe('regex101.exec(input0);', 'results');
var regex102 = /abc$/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex102.exec(input0);', 'results');
// Failers
var input1 = "abc\n";
var results = null;
shouldBe('regex102.exec(input1);', 'results');
var input2 = "abc\ndef";
var results = null;
shouldBe('regex102.exec(input2);', 'results');
var regex103 = /abc$/m;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex103.exec(input0);', 'results');
var input1 = "abc\n";
var results = ["abc"];
shouldBe('regex103.exec(input1);', 'results');
var input2 = "abc\ndef";
var results = ["abc"];
shouldBe('regex103.exec(input2);', 'results');
var regex104 = /(abc)\123/;
var input0 = "abc\x53";
var results = ["abcS", "abc"];
shouldBe('regex104.exec(input0);', 'results');
var regex105 = /(abc)\223/;
var input0 = "abc\x93";
var results = ["abc\x93", "abc"];
shouldBe('regex105.exec(input0);', 'results');
var regex106 = /(abc)\323/;
var input0 = "abc\xd3";
var results = ["abc\xd3", "abc"];
shouldBe('regex106.exec(input0);', 'results');
var regex107 = /(abc)\100/;
var input0 = "abc\x40";
var results = ["abc@", "abc"];
shouldBe('regex107.exec(input0);', 'results');
var input1 = "abc\100";
var results = ["abc@", "abc"];
shouldBe('regex107.exec(input1);', 'results');
var regex108 = /(abc)\1000/;
var input0 = "abc\x400";
var results = ["abc@0", "abc"];
shouldBe('regex108.exec(input0);', 'results');
var input1 = "abc\x40\x30";
var results = ["abc@0", "abc"];
shouldBe('regex108.exec(input1);', 'results');
var input2 = "abc\1000";
var results = ["abc@0", "abc"];
shouldBe('regex108.exec(input2);', 'results');
var input3 = "abc\100\x30";
var results = ["abc@0", "abc"];
shouldBe('regex108.exec(input3);', 'results');
var input4 = "abc\100\060";
var results = ["abc@0", "abc"];
shouldBe('regex108.exec(input4);', 'results');
var input5 = "abc\100\60";
var results = ["abc@0", "abc"];
shouldBe('regex108.exec(input5);', 'results');
var regex109 = /abc\081/;
var input0 = "abc\081";
var results = ["abc\x0081"];
shouldBe('regex109.exec(input0);', 'results');
var input1 = "abc\0\x38\x31";
var results = ["abc\x0081"];
shouldBe('regex109.exec(input1);', 'results');
var regex110 = /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/;
var input0 = "abcdefghijkllS";
var results = ["abcdefghijkllS", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"];
shouldBe('regex110.exec(input0);', 'results');
var regex111 = /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/;
var input0 = "abcdefghijk\12S";
var results = ["abcdefghijk\x0aS", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"];
shouldBe('regex111.exec(input0);', 'results');
var regex112 = /ab\idef/;
var input0 = "abidef";
var results = ["abidef"];
shouldBe('regex112.exec(input0);', 'results');
var regex113 = /a{0}bc/;
var input0 = "bc";
var results = ["bc"];
shouldBe('regex113.exec(input0);', 'results');
var regex114 = /(?:a|(?:bc)){0,0}?xyz/;
var input0 = "xyz";
var results = ["xyz"];
shouldBe('regex114.exec(input0);', 'results');
var regex115 = /abc[\10]de/;
var input0 = "abc\010de";
var results = ["abc\x08de"];
shouldBe('regex115.exec(input0);', 'results');
var regex116 = /abc[\1]de/;
var input0 = "abc\1de";
var results = ["abc\x01de"];
shouldBe('regex116.exec(input0);', 'results');
var regex117 = /(abc)[\1]de/;
var input0 = "abc\1de";
var results = ["abc\x01de", "abc"];
shouldBe('regex117.exec(input0);', 'results');
var regex118 = /a.b/;
var input0 = "a\nb";
var results = null;
shouldBe('regex118.exec(input0);', 'results');
var regex119 = /^([^a])([^\b])([^c]*)([^d]{3,4})/;
var input0 = "baNOTccccd";
var results = ["baNOTcccc", "b", "a", "NOT", "cccc"];
shouldBe('regex119.exec(input0);', 'results');
var input1 = "baNOTcccd";
var results = ["baNOTccc", "b", "a", "NOT", "ccc"];
shouldBe('regex119.exec(input1);', 'results');
var input2 = "baNOTccd";
var results = ["baNOTcc", "b", "a", "NO", "Tcc"];
shouldBe('regex119.exec(input2);', 'results');
var input3 = "bacccd";
var results = ["baccc", "b", "a", "", "ccc"];
shouldBe('regex119.exec(input3);', 'results');
// Failers
var input4 = "anything";
var results = null;
shouldBe('regex119.exec(input4);', 'results');
var input5 = "b\bc";
var results = null;
shouldBe('regex119.exec(input5);', 'results');
var input6 = "baccd";
var results = null;
shouldBe('regex119.exec(input6);', 'results');
var regex120 = /[^a]/;
var input0 = "Abc";
var results = ["A"];
shouldBe('regex120.exec(input0);', 'results');
var regex121 = /[^a]/i;
var input0 = "Abc";
var results = ["b"];
shouldBe('regex121.exec(input0);', 'results');
var regex122 = /[^a]+/;
var input0 = "AAAaAbc";
var results = ["AAA"];
shouldBe('regex122.exec(input0);', 'results');
var regex123 = /[^a]+/i;
var input0 = "AAAaAbc";
var results = ["bc"];
shouldBe('regex123.exec(input0);', 'results');
var regex124 = /[^a]+/;
var input0 = "bbb\nccc";
var results = ["bbb\x0accc"];
shouldBe('regex124.exec(input0);', 'results');
var regex125 = /[^k]$/;
var input0 = "abc";
var results = ["c"];
shouldBe('regex125.exec(input0);', 'results');
// Failers
var input1 = "abk";
var results = null;
shouldBe('regex125.exec(input1);', 'results');
var regex126 = /[^k]{2,3}$/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex126.exec(input0);', 'results');
var input1 = "kbc";
var results = ["bc"];
shouldBe('regex126.exec(input1);', 'results');
var input2 = "kabc";
var results = ["abc"];
shouldBe('regex126.exec(input2);', 'results');
// Failers
var input3 = "abk";
var results = null;
shouldBe('regex126.exec(input3);', 'results');
var input4 = "akb";
var results = null;
shouldBe('regex126.exec(input4);', 'results');
var input5 = "akk";
var results = null;
shouldBe('regex126.exec(input5);', 'results');
var regex127 = /^\d{8,}\@.+[^k]$/;
var input0 = "12345678\@a.b.c.d";
var results = ["12345678@a.b.c.d"];
shouldBe('regex127.exec(input0);', 'results');
var input1 = "123456789\@x.y.z";
var results = ["123456789@x.y.z"];
shouldBe('regex127.exec(input1);', 'results');
// Failers
var input2 = "12345678\@x.y.uk";
var results = null;
shouldBe('regex127.exec(input2);', 'results');
var input3 = "1234567\@a.b.c.d";
var results = null;
shouldBe('regex127.exec(input3);', 'results');
var regex128 = /(a)\1{8,}/;
var input0 = "aaaaaaaaa";
var results = ["aaaaaaaaa", "a"];
shouldBe('regex128.exec(input0);', 'results');
var input1 = "aaaaaaaaaa";
var results = ["aaaaaaaaaa", "a"];
shouldBe('regex128.exec(input1);', 'results');
// Failers
var input2 = "aaaaaaa";
var results = null;
shouldBe('regex128.exec(input2);', 'results');
var regex129 = /[^a]/;
var input0 = "aaaabcd";
var results = ["b"];
shouldBe('regex129.exec(input0);', 'results');
var input1 = "aaAabcd";
var results = ["A"];
shouldBe('regex129.exec(input1);', 'results');
var regex130 = /[^a]/i;
var input0 = "aaaabcd";
var results = ["b"];
shouldBe('regex130.exec(input0);', 'results');
var input1 = "aaAabcd";
var results = ["b"];
shouldBe('regex130.exec(input1);', 'results');
var regex131 = /[^az]/;
var input0 = "aaaabcd";
var results = ["b"];
shouldBe('regex131.exec(input0);', 'results');
var input1 = "aaAabcd";
var results = ["A"];
shouldBe('regex131.exec(input1);', 'results');
var regex132 = /[^az]/i;
var input0 = "aaaabcd";
var results = ["b"];
shouldBe('regex132.exec(input0);', 'results');
var input1 = "aaAabcd";
var results = ["b"];
shouldBe('regex132.exec(input1);', 'results');
var regex133 = /\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/;
var input0 = "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377";
var results = ["\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"];
shouldBe('regex133.exec(input0);', 'results');
var regex134 = /P[^*]TAIRE[^*]{1,6}?LL/;
var input0 = "xxxxxxxxxxxPSTAIREISLLxxxxxxxxx";
var results = ["PSTAIREISLL"];
shouldBe('regex134.exec(input0);', 'results');
var regex135 = /P[^*]TAIRE[^*]{1,}?LL/;
var input0 = "xxxxxxxxxxxPSTAIREISLLxxxxxxxxx";
var results = ["PSTAIREISLL"];
shouldBe('regex135.exec(input0);', 'results');
var regex136 = /(\.\d\d[1-9]?)\d+/;
var input0 = "1.230003938";
var results = [".230003938", ".23"];
shouldBe('regex136.exec(input0);', 'results');
var input1 = "1.875000282";
var results = [".875000282", ".875"];
shouldBe('regex136.exec(input1);', 'results');
var input2 = "1.235";
var results = [".235", ".23"];
shouldBe('regex136.exec(input2);', 'results');
var regex137 = /(\.\d\d((?=0)|\d(?=\d)))/;
var input0 = "1.230003938";
var results = [".23", ".23", ""];
shouldBe('regex137.exec(input0);', 'results');
var input1 = "1.875000282";
var results = [".875", ".875", "5"];
shouldBe('regex137.exec(input1);', 'results');
// Failers
var input2 = "1.235";
var results = null;
shouldBe('regex137.exec(input2);', 'results');
var regex138 = /a(?:)b/;
var input0 = "ab";
var results = ["ab"];
shouldBe('regex138.exec(input0);', 'results');
var regex139 = /\b(foo)\s+(\w+)/i;
var input0 = "Food is on the foo table";
var results = ["foo table", "foo", "table"];
shouldBe('regex139.exec(input0);', 'results');
var regex140 = /foo(.*)bar/;
var input0 = "The food is under the bar in the barn.";
var results = ["food is under the bar in the bar", "d is under the bar in the "];
shouldBe('regex140.exec(input0);', 'results');
var regex141 = /foo(.*?)bar/ ;
var input0 = "The food is under the bar in the barn.";
var results = ["food is under the bar", "d is under the "];
shouldBe('regex141.exec(input0);', 'results');
var regex142 = /(.*)(\d*)/;
var input0 = "I have 2 numbers: 53147";
var results = ["I have 2 numbers: 53147", "I have 2 numbers: 53147", ""];
shouldBe('regex142.exec(input0);', 'results');
var regex143 = /(.*)(\d+)/;
var input0 = "I have 2 numbers: 53147";
var results = ["I have 2 numbers: 53147", "I have 2 numbers: 5314", "7"];
shouldBe('regex143.exec(input0);', 'results');
var regex144 = /(.*?)(\d*)/;
var input0 = "I have 2 numbers: 53147";
var results = ["", "", ""];
shouldBe('regex144.exec(input0);', 'results');
var regex145 = /(.*?)(\d+)/;
var input0 = "I have 2 numbers: 53147";
var results = ["I have 2", "I have ", "2"];
shouldBe('regex145.exec(input0);', 'results');
var regex146 = /(.*)(\d+)$/;
var input0 = "I have 2 numbers: 53147";
var results = ["I have 2 numbers: 53147", "I have 2 numbers: 5314", "7"];
shouldBe('regex146.exec(input0);', 'results');
var regex147 = /(.*?)(\d+)$/;
var input0 = "I have 2 numbers: 53147";
var results = ["I have 2 numbers: 53147", "I have 2 numbers: ", "53147"];
shouldBe('regex147.exec(input0);', 'results');
var regex148 = /(.*)\b(\d+)$/;
var input0 = "I have 2 numbers: 53147";
var results = ["I have 2 numbers: 53147", "I have 2 numbers: ", "53147"];
shouldBe('regex148.exec(input0);', 'results');
var regex149 = /(.*\D)(\d+)$/;
var input0 = "I have 2 numbers: 53147";
var results = ["I have 2 numbers: 53147", "I have 2 numbers: ", "53147"];
shouldBe('regex149.exec(input0);', 'results');
var regex150 = /^\D*(?!123)/;
var input0 = "ABC123";
var results = ["AB"];
shouldBe('regex150.exec(input0);', 'results');
var regex151 = /^(\D*)(?=\d)(?!123)/;
var input0 = "ABC445";
var results = ["ABC", "ABC"];
shouldBe('regex151.exec(input0);', 'results');
// Failers
var input1 = "ABC123";
var results = null;
shouldBe('regex151.exec(input1);', 'results');
var regex152 = /^[W-]46]/;
var input0 = "W46]789";
var results = ["W46]"];
shouldBe('regex152.exec(input0);', 'results');
var input1 = "-46]789";
var results = ["-46]"];
shouldBe('regex152.exec(input1);', 'results');
// Failers
var input2 = "Wall";
var results = null;
shouldBe('regex152.exec(input2);', 'results');
var input3 = "Zebra";
var results = null;
shouldBe('regex152.exec(input3);', 'results');
var input4 = "42";
var results = null;
shouldBe('regex152.exec(input4);', 'results');
var input5 = "[abcd]";
var results = null;
shouldBe('regex152.exec(input5);', 'results');
var input6 = "]abcd[";
var results = null;
shouldBe('regex152.exec(input6);', 'results');
var regex153 = /^[W-\]46]/;
var input0 = "W46]789";
var results = ["W"];
shouldBe('regex153.exec(input0);', 'results');
var input1 = "Wall";
var results = ["W"];
shouldBe('regex153.exec(input1);', 'results');
var input2 = "Zebra";
var results = ["Z"];
shouldBe('regex153.exec(input2);', 'results');
var input3 = "Xylophone";
var results = ["X"];
shouldBe('regex153.exec(input3);', 'results');
var input4 = "42";
var results = ["4"];
shouldBe('regex153.exec(input4);', 'results');
var input5 = "[abcd]";
var results = ["["];
shouldBe('regex153.exec(input5);', 'results');
var input6 = "]abcd[";
var results = ["]"];
shouldBe('regex153.exec(input6);', 'results');
var input7 = "\\backslash";
var results = ["\\"];
shouldBe('regex153.exec(input7);', 'results');
// Failers
var input8 = "-46]789";
var results = null;
shouldBe('regex153.exec(input8);', 'results');
var input9 = "well";
var results = null;
shouldBe('regex153.exec(input9);', 'results');
var regex154 = /\d\d\/\d\d\/\d\d\d\d/;
var input0 = "01/01/2000";
var results = ["01/01/2000"];
shouldBe('regex154.exec(input0);', 'results');
var regex155 = /word (?:[a-zA-Z0-9]+ ){0,10}otherword/;
var input0 = "word cat dog elephant mussel cow horse canary baboon snake shark otherword";
var results = ["word cat dog elephant mussel cow horse canary baboon snake shark otherword"];
shouldBe('regex155.exec(input0);', 'results');
var input1 = "word cat dog elephant mussel cow horse canary baboon snake shark";
var results = null;
shouldBe('regex155.exec(input1);', 'results');
var regex156 = /word (?:[a-zA-Z0-9]+ ){0,300}otherword/;
var input0 = "word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope";
var results = null;
shouldBe('regex156.exec(input0);', 'results');
var regex157 = /^(?:a){0,0}/;
var input0 = "bcd";
var results = [""];
shouldBe('regex157.exec(input0);', 'results');
var input1 = "abc";
var results = [""];
shouldBe('regex157.exec(input1);', 'results');
var input2 = "aab";
var results = [""];
shouldBe('regex157.exec(input2);', 'results');
var regex158 = /^(a){0,1}/;
var input0 = "bcd";
var results = ["", undefined];
shouldBe('regex158.exec(input0);', 'results');
var input1 = "abc";
var results = ["a", "a"];
shouldBe('regex158.exec(input1);', 'results');
var input2 = "aab";
var results = ["a", "a"];
shouldBe('regex158.exec(input2);', 'results');
var regex159 = /^(a){0,2}/;
var input0 = "bcd";
var results = ["", undefined];
shouldBe('regex159.exec(input0);', 'results');
var input1 = "abc";
var results = ["a", "a"];
shouldBe('regex159.exec(input1);', 'results');
var input2 = "aab";
var results = ["aa", "a"];
shouldBe('regex159.exec(input2);', 'results');
var regex160 = /^(a){0,3}/;
var input0 = "bcd";
var results = ["", undefined];
shouldBe('regex160.exec(input0);', 'results');
var input1 = "abc";
var results = ["a", "a"];
shouldBe('regex160.exec(input1);', 'results');
var input2 = "aab";
var results = ["aa", "a"];
shouldBe('regex160.exec(input2);', 'results');
var input3 = "aaa";
var results = ["aaa", "a"];
shouldBe('regex160.exec(input3);', 'results');
var regex161 = /^(a){0,}/;
var input0 = "bcd";
var results = ["", undefined];
shouldBe('regex161.exec(input0);', 'results');
var input1 = "abc";
var results = ["a", "a"];
shouldBe('regex161.exec(input1);', 'results');
var input2 = "aab";
var results = ["aa", "a"];
shouldBe('regex161.exec(input2);', 'results');
var input3 = "aaa";
var results = ["aaa", "a"];
shouldBe('regex161.exec(input3);', 'results');
var input4 = "aaaaaaaa";
var results = ["aaaaaaaa", "a"];
shouldBe('regex161.exec(input4);', 'results');
var regex162 = /^(a){1,1}/;
var input0 = "bcd";
var results = null;
shouldBe('regex162.exec(input0);', 'results');
var input1 = "abc";
var results = ["a", "a"];
shouldBe('regex162.exec(input1);', 'results');
var input2 = "aab";
var results = ["a", "a"];
shouldBe('regex162.exec(input2);', 'results');
var regex163 = /^(a){1,2}/;
var input0 = "bcd";
var results = null;
shouldBe('regex163.exec(input0);', 'results');
var input1 = "abc";
var results = ["a", "a"];
shouldBe('regex163.exec(input1);', 'results');
var input2 = "aab";
var results = ["aa", "a"];
shouldBe('regex163.exec(input2);', 'results');
var regex164 = /^(a){1,3}/;
var input0 = "bcd";
var results = null;
shouldBe('regex164.exec(input0);', 'results');
var input1 = "abc";
var results = ["a", "a"];
shouldBe('regex164.exec(input1);', 'results');
var input2 = "aab";
var results = ["aa", "a"];
shouldBe('regex164.exec(input2);', 'results');
var input3 = "aaa";
var results = ["aaa", "a"];
shouldBe('regex164.exec(input3);', 'results');
var regex165 = /^(a){1,}/;
var input0 = "bcd";
var results = null;
shouldBe('regex165.exec(input0);', 'results');
var input1 = "abc";
var results = ["a", "a"];
shouldBe('regex165.exec(input1);', 'results');
var input2 = "aab";
var results = ["aa", "a"];
shouldBe('regex165.exec(input2);', 'results');
var input3 = "aaa";
var results = ["aaa", "a"];
shouldBe('regex165.exec(input3);', 'results');
var input4 = "aaaaaaaa";
var results = ["aaaaaaaa", "a"];
shouldBe('regex165.exec(input4);', 'results');
var regex166 = /.*\.gif/;
var input0 = "borfle\nbib.gif\nno";
var results = ["bib.gif"];
shouldBe('regex166.exec(input0);', 'results');
var regex167 = /.{0,}\.gif/;
var input0 = "borfle\nbib.gif\nno";
var results = ["bib.gif"];
shouldBe('regex167.exec(input0);', 'results');
var regex168 = /.*\.gif/m;
var input0 = "borfle\nbib.gif\nno";
var results = ["bib.gif"];
shouldBe('regex168.exec(input0);', 'results');
var regex169 = /.*\.gif/;
var input0 = "borfle\nbib.gif\nno";
var results = ["bib.gif"];
shouldBe('regex169.exec(input0);', 'results');
var regex170 = /.*\.gif/m;
var input0 = "borfle\nbib.gif\nno";
var results = ["bib.gif"];
shouldBe('regex170.exec(input0);', 'results');
var regex171 = /.*$/;
var input0 = "borfle\nbib.gif\nno";
var results = ["no"];
shouldBe('regex171.exec(input0);', 'results');
var regex172 = /.*$/m;
var input0 = "borfle\nbib.gif\nno";
var results = ["borfle"];
shouldBe('regex172.exec(input0);', 'results');
var regex173 = /[\w\W]*?$/;
var input0 = "borfle\nbib.gif\nno";
var results = ["borfle\nbib.gif\x0ano"];
shouldBe('regex173.exec(input0);', 'results');
var regex174 = /[\w\W]*?$/m;
var input0 = "borfle\nbib.gif\nno";
var results = ["borfle"];
shouldBe('regex174.exec(input0);', 'results');
var regex175 = /.*$/;
var input0 = "borfle\nbib.gif\nno\n";
var results = [""];
shouldBe('regex175.exec(input0);', 'results');
var regex176 = /.*$/m;
var input0 = "borfle\nbib.gif\nno\n";
var results = ["borfle"];
shouldBe('regex176.exec(input0);', 'results');
var regex177 = /.*$/;
var input0 = "borfle\nbib.gif\nno\n";
var results = [""];
shouldBe('regex177.exec(input0);', 'results');
var regex178 = /.*$/m;
var input0 = "borfle\nbib.gif\nno\n";
var results = ["borfle"];
shouldBe('regex178.exec(input0);', 'results');
var regex179 = /(.*X|^B)/;
var input0 = "abcde\n1234Xyz";
var results = ["1234X", "1234X"];
shouldBe('regex179.exec(input0);', 'results');
var input1 = "BarFoo";
var results = ["B", "B"];
shouldBe('regex179.exec(input1);', 'results');
// Failers
var input2 = "abcde\nBar";
var results = null;
shouldBe('regex179.exec(input2);', 'results');
var regex180 = /(.*X|^B)/m;
var input0 = "abcde\n1234Xyz";
var results = ["1234X", "1234X"];
shouldBe('regex180.exec(input0);', 'results');
var input1 = "BarFoo";
var results = ["B", "B"];
shouldBe('regex180.exec(input1);', 'results');
var input2 = "abcde\nBar";
var results = ["B", "B"];
shouldBe('regex180.exec(input2);', 'results');
var regex181 = /([\w\W]*X|^B)/;
var input0 = "abcde\n1234Xyz";
var results = ["abcde\x0a1234X", "abcde\x0a1234X"];
shouldBe('regex181.exec(input0);', 'results');
var input1 = "BarFoo";
var results = ["B", "B"];
shouldBe('regex181.exec(input1);', 'results');
// Failers
var input2 = "abcde\nBar";
var results = null;
shouldBe('regex181.exec(input2);', 'results');
var regex182 = /([\w\W]*X|^B)/m;
var input0 = "abcde\n1234Xyz";
var results = ["abcde\x0a1234X", "abcde\x0a1234X"];
shouldBe('regex182.exec(input0);', 'results');
var input1 = "BarFoo";
var results = ["B", "B"];
shouldBe('regex182.exec(input1);', 'results');
var input2 = "abcde\nBar";
var results = ["B", "B"];
shouldBe('regex182.exec(input2);', 'results');
var regex183 = /([\w\W]*X|^B)/;
var input0 = "abcde\n1234Xyz";
var results = ["abcde\x0a1234X", "abcde\x0a1234X"];
shouldBe('regex183.exec(input0);', 'results');
var input1 = "BarFoo";
var results = ["B", "B"];
shouldBe('regex183.exec(input1);', 'results');
// Failers
var input2 = "abcde\nBar";
var results = null;
shouldBe('regex183.exec(input2);', 'results');
var regex184 = /(?:.*X|^B)/;
var input0 = "abcde\n1234Xyz";
var results = ["1234X"];
shouldBe('regex184.exec(input0);', 'results');
var input1 = "BarFoo";
var results = ["B"];
shouldBe('regex184.exec(input1);', 'results');
// Failers
var input2 = "abcde\nBar";
var results = null;
shouldBe('regex184.exec(input2);', 'results');
var regex185 = /^.*B/;
// Failers
var input0 = "abc\nB";
var results = null;
shouldBe('regex185.exec(input0);', 'results');
var regex186 = /^[\w\W]*B/;
var input0 = "abc\nB";
var results = ["abc\x0aB"];
shouldBe('regex186.exec(input0);', 'results');
var regex187 = /.*B/;
var input0 = "abc\nB";
var results = ["B"];
shouldBe('regex187.exec(input0);', 'results');
var regex188 = /^.*B/;
// Failers
var input0 = "abc\nB";
var results = null;
shouldBe('regex188.exec(input0);', 'results');
var regex189a = /^B/;
// Failers
var input0 = "abc\nB";
var results = null;
shouldBe('regex189a.exec(input0);', 'results');
var regex189b = /^B/m;
var input0 = "abc\nB";
var results = ["B"];
shouldBe('regex189b.exec(input0);', 'results');
var regex190a = /B$/;
// Failers
var input0 = "B\n";
var results = null;
shouldBe('regex190a.exec(input0);', 'results');
var regex190b = /B$/m;
var input0 = "B\n";
var results = ["B"];
shouldBe('regex190b.exec(input0);', 'results');
var regex191 = /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/;
var input0 = "123456654321";
var results = ["123456654321"];
shouldBe('regex191.exec(input0);', 'results');
var regex192 = /^\d\d\d\d\d\d\d\d\d\d\d\d/;
var input0 = "123456654321";
var results = ["123456654321"];
shouldBe('regex192.exec(input0);', 'results');
var regex193 = /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/;
var input0 = "123456654321";
var results = ["123456654321"];
shouldBe('regex193.exec(input0);', 'results');
var regex194 = /^[abc]{12}/;
var input0 = "abcabcabcabc";
var results = ["abcabcabcabc"];
shouldBe('regex194.exec(input0);', 'results');
var regex195 = /^[a-c]{12}/;
var input0 = "abcabcabcabc";
var results = ["abcabcabcabc"];
shouldBe('regex195.exec(input0);', 'results');
var regex196 = /^(a|b|c){12}/;
var input0 = "abcabcabcabc";
var results = ["abcabcabcabc", "c"];
shouldBe('regex196.exec(input0);', 'results');
var regex197 = /^[abcdefghijklmnopqrstuvwxy0123456789]/;
var input0 = "n";
var results = ["n"];
shouldBe('regex197.exec(input0);', 'results');
// Failers
var input1 = "z";
var results = null;
shouldBe('regex197.exec(input1);', 'results');
var regex198 = /abcde{0,0}/;
var input0 = "abcd";
var results = ["abcd"];
shouldBe('regex198.exec(input0);', 'results');
// Failers
var input1 = "abce";
var results = null;
shouldBe('regex198.exec(input1);', 'results');
var regex199 = /ab[cd]{0,0}e/;
var input0 = "abe";
var results = ["abe"];
shouldBe('regex199.exec(input0);', 'results');
// Failers
var input1 = "abcde";
var results = null;
shouldBe('regex199.exec(input1);', 'results');
var regex200 = /ab(c){0,0}d/;
var input0 = "abd";
var results = ["abd", undefined];
shouldBe('regex200.exec(input0);', 'results');
// Failers
var input1 = "abcd";
var results = null;
shouldBe('regex200.exec(input1);', 'results');
var regex201 = /a(b*)/;
var input0 = "a";
var results = ["a", ""];
shouldBe('regex201.exec(input0);', 'results');
var input1 = "ab";
var results = ["ab", "b"];
shouldBe('regex201.exec(input1);', 'results');
var input2 = "abbbb";
var results = ["abbbb", "bbbb"];
shouldBe('regex201.exec(input2);', 'results');
// Failers
var input3 = "bbbbb";
var results = null;
shouldBe('regex201.exec(input3);', 'results');
var regex202 = /ab\d{0}e/;
var input0 = "abe";
var results = ["abe"];
shouldBe('regex202.exec(input0);', 'results');
// Failers
var input1 = "ab1e";
var results = null;
shouldBe('regex202.exec(input1);', 'results');
var regex203 = /"([^\\"]+|\\.)*"/;
var input0 = "the \"quick\" brown fox";
var results = ["\"quick\"", "quick"];
shouldBe('regex203.exec(input0);', 'results');
var input1 = "\"the \\\"quick\\\" brown fox\"";
var results = ["\"the \\\"quick\\\" brown fox\"", " brown fox"];
shouldBe('regex203.exec(input1);', 'results');
var regex204 = /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/i;
var input0 = "<TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>";
var results = ["<TR BGCOLOR=\'#DBE9E9\'><TD align=left valign=top>43.<a href=\'joblist.cfm?JobID=94 6735&Keyword=\'>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>", " BGCOLOR=\'#DBE9E9\'", " align=left valign=top", "43.", "<a href=\'joblist.cfm?JobID=94 6735&Keyword=\'>Word Processor<BR>(N-1286)", "", "", undefined, " align=left valign=top", "Lega lstaff.com", " align=left valign=top", "CA - Statewide"];
shouldBe('regex204.exec(input0);', 'results');
var regex205 = /a[^a]b/;
var input0 = "acb";
var results = ["acb"];
shouldBe('regex205.exec(input0);', 'results');
var input1 = "a\nb";
var results = ["a\x0ab"];
shouldBe('regex205.exec(input1);', 'results');
var regex206 = /a.b/;
var input0 = "acb";
var results = ["acb"];
shouldBe('regex206.exec(input0);', 'results');
// Failers
var input1 = "a\nb";
var results = null;
shouldBe('regex206.exec(input1);', 'results');
var regex207 = /a[^a]b/;
var input0 = "acb";
var results = ["acb"];
shouldBe('regex207.exec(input0);', 'results');
var input1 = "a\nb";
var results = ["a\x0ab"];
shouldBe('regex207.exec(input1);', 'results');
var regex208 = /a[\w\W]b/;
var input0 = "acb";
var results = ["acb"];
shouldBe('regex208.exec(input0);', 'results');
var input1 = "a\nb";
var results = ["a\x0ab"];
shouldBe('regex208.exec(input1);', 'results');
var regex209 = /^(b+?|a){1,2}?c/;
var input0 = "bac";
var results = ["bac", "a"];
shouldBe('regex209.exec(input0);', 'results');
var input1 = "bbac";
var results = ["bbac", "a"];
shouldBe('regex209.exec(input1);', 'results');
var input2 = "bbbac";
var results = ["bbbac", "a"];
shouldBe('regex209.exec(input2);', 'results');
var input3 = "bbbbac";
var results = ["bbbbac", "a"];
shouldBe('regex209.exec(input3);', 'results');
var input4 = "bbbbbac";
var results = ["bbbbbac", "a"];
shouldBe('regex209.exec(input4);', 'results');
var regex210 = /^(b+|a){1,2}?c/;
var input0 = "bac";
var results = ["bac", "a"];
shouldBe('regex210.exec(input0);', 'results');
var input1 = "bbac";
var results = ["bbac", "a"];
shouldBe('regex210.exec(input1);', 'results');
var input2 = "bbbac";
var results = ["bbbac", "a"];
shouldBe('regex210.exec(input2);', 'results');
var input3 = "bbbbac";
var results = ["bbbbac", "a"];
shouldBe('regex210.exec(input3);', 'results');
var input4 = "bbbbbac";
var results = ["bbbbbac", "a"];
shouldBe('regex210.exec(input4);', 'results');
var regex211 = /(?!^)x/m;
var input0 = "a\bx\n";
var results = ["x"];
shouldBe('regex211.exec(input0);', 'results');
// Failers
var input1 = "x\nb\n";
var results = null;
shouldBe('regex211.exec(input1);', 'results');
var regex212 = /\0{ab}/;
var input0 = "\0{ab}";
var results = ["\x00{ab}"];
shouldBe('regex212.exec(input0);', 'results');
var regex213 = /(A|B)*?CD/;
var input0 = "CD";
var results = ["CD", undefined];
shouldBe('regex213.exec(input0);', 'results');
var regex214 = /(A|B)*CD/;
var input0 = "CD";
var results = ["CD", undefined];
shouldBe('regex214.exec(input0);', 'results');
var regex215 = /^((AB)+?)\2$/;
var input0 = "ABABAB";
var results = ["ABABAB", "ABAB", "AB"];
shouldBe('regex215.exec(input0);', 'results');
var regex216 = /(AB)*\1/;
var input0 = "ABABAB";
var results = ["ABABAB", "AB"];
shouldBe('regex216.exec(input0);', 'results');
var regex220 = /^abc$/m;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex220.exec(input0);', 'results');
var input1 = "abc\n";
var results = ["abc"];
shouldBe('regex220.exec(input1);', 'results');
var input2 = "qqq\nabc";
var results = ["abc"];
shouldBe('regex220.exec(input2);', 'results');
var input3 = "abc\nzzz";
var results = ["abc"];
shouldBe('regex220.exec(input3);', 'results');
var input4 = "qqq\nabc\nzzz";
var results = ["abc"];
shouldBe('regex220.exec(input4);', 'results');
var regex225 = /(\d+)(\w)/;
var input0 = "12345a";
var results = ["12345a", "12345", "a"];
shouldBe('regex225.exec(input0);', 'results');
var input1 = "12345+";
var results = ["12345", "1234", "5"];
shouldBe('regex225.exec(input1);', 'results');
var regex234 = /ab/;
var input0 = "ab";
var results = ["ab"];
shouldBe('regex234.exec(input0);', 'results');
// Failers
var input1 = "Ab";
var results = null;
shouldBe('regex234.exec(input1);', 'results');
var input2 = "aB";
var results = null;
shouldBe('regex234.exec(input2);', 'results');
var input3 = "AB";
var results = null;
shouldBe('regex234.exec(input3);', 'results');
var regex235 = /(a bc)d e/;
var input0 = "a bcd e";
var results = ["a bcd e", "a bc"];
shouldBe('regex235.exec(input0);', 'results');
// Failers
var input1 = "a b cd e";
var results = null;
shouldBe('regex235.exec(input1);', 'results');
var input2 = "abcd e";
var results = null;
shouldBe('regex235.exec(input2);', 'results');
var input3 = "a bcde";
var results = null;
shouldBe('regex235.exec(input3);', 'results');
var regex236 = /(a bcde f)/;
var input0 = "a bcde f";
var results = ["a bcde f", "a bcde f"];
shouldBe('regex236.exec(input0);', 'results');
// Failers
var input1 = "abcdef";
var results = null;
shouldBe('regex236.exec(input1);', 'results');
var regex237 = /(a[bB])c/;
var input0 = "abc";
var results = ["abc", "ab"];
shouldBe('regex237.exec(input0);', 'results');
var input1 = "aBc";
var results = ["aBc", "aB"];
shouldBe('regex237.exec(input1);', 'results');
// Failers
var input2 = "abC";
var results = null;
shouldBe('regex237.exec(input2);', 'results');
var input3 = "aBC";
var results = null;
shouldBe('regex237.exec(input3);', 'results');
var input4 = "Abc";
var results = null;
shouldBe('regex237.exec(input4);', 'results');
var input5 = "ABc";
var results = null;
shouldBe('regex237.exec(input5);', 'results');
var input6 = "ABC";
var results = null;
shouldBe('regex237.exec(input6);', 'results');
var input7 = "AbC";
var results = null;
shouldBe('regex237.exec(input7);', 'results');
var regex238 = /a[bB]c/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex238.exec(input0);', 'results');
var input1 = "aBc";
var results = ["aBc"];
shouldBe('regex238.exec(input1);', 'results');
// Failers
var input2 = "ABC";
var results = null;
shouldBe('regex238.exec(input2);', 'results');
var input3 = "abC";
var results = null;
shouldBe('regex238.exec(input3);', 'results');
var input4 = "aBC";
var results = null;
shouldBe('regex238.exec(input4);', 'results');
var regex239 = /a[bB]*c/;
var input0 = "aBc";
var results = ["aBc"];
shouldBe('regex239.exec(input0);', 'results');
var input1 = "aBBc";
var results = ["aBBc"];
shouldBe('regex239.exec(input1);', 'results');
// Failers
var input2 = "aBC";
var results = null;
shouldBe('regex239.exec(input2);', 'results');
var input3 = "aBBC";
var results = null;
shouldBe('regex239.exec(input3);', 'results');
var regex240 = /a(?=b[cC])\w\wd/;
var input0 = "abcd";
var results = ["abcd"];
shouldBe('regex240.exec(input0);', 'results');
var input1 = "abCd";
var results = ["abCd"];
shouldBe('regex240.exec(input1);', 'results');
// Failers
var input2 = "aBCd";
var results = null;
shouldBe('regex240.exec(input2);', 'results');
var input3 = "abcD";
var results = null;
shouldBe('regex240.exec(input3);', 'results');
var regex241 = /(?:more[\w\W]*than).*million/i;
var input0 = "more than million";
var results = ["more than million"];
shouldBe('regex241.exec(input0);', 'results');
var input1 = "more than MILLION";
var results = ["more than MILLION"];
shouldBe('regex241.exec(input1);', 'results');
var input2 = "more \n than Million";
var results = ["more \x0a than Million"];
shouldBe('regex241.exec(input2);', 'results');
var input3 = "MORE THAN MILLION";
var results = ["MORE THAN MILLION"];
// Failers
shouldBe('regex241.exec(input3);', 'results');
var input4 = "more \n than \n million";
var results = null;
shouldBe('regex241.exec(input4);', 'results');
var regex242 = /(?:more[\w\W]*than).*million/i;
var input0 = "more than million";
var results = ["more than million"];
shouldBe('regex242.exec(input0);', 'results');
var input1 = "more than MILLION";
var results = ["more than MILLION"];
shouldBe('regex242.exec(input1);', 'results');
var input2 = "more \n than Million";
var results = ["more \x0a than Million"];
shouldBe('regex242.exec(input2);', 'results');
var input3 = "MORE THAN MILLION";
var results = ["MORE THAN MILLION"];
// Failers
shouldBe('regex242.exec(input3);', 'results');
var input4 = "more \n than \n million";
var results = null;
shouldBe('regex242.exec(input4);', 'results');
var regex243 = /(?:ab+)+c/i ;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex243.exec(input0);', 'results');
var input1 = "aBbc";
var results = ["aBbc"];
shouldBe('regex243.exec(input1);', 'results');
var input2 = "aBBc";
var results = ["aBBc"];
shouldBe('regex243.exec(input2);', 'results');
var input3 = "Abc";
var results = ["Abc"];
shouldBe('regex243.exec(input3);', 'results');
var input4 = "abbC";
var results = ["abbC"];
shouldBe('regex243.exec(input4);', 'results');
// Failers
var input5 = "abAb";
var results = null;
shouldBe('regex243.exec(input5);', 'results');
var regex244 = /(?=a[bB])\w\wc/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex244.exec(input0);', 'results');
var input1 = "aBc";
var results = ["aBc"];
shouldBe('regex244.exec(input1);', 'results');
// Failers
var input2 = "Ab";
var results = null;
shouldBe('regex244.exec(input2);', 'results');
var input3 = "abC";
var results = null;
shouldBe('regex244.exec(input3);', 'results');
var input4 = "aBC";
var results = null;
shouldBe('regex244.exec(input4);', 'results');
var regex246 = /(?:(a)|b)(?:A|B)/;
var input0 = "aA";
var results = ["aA", "a"];
shouldBe('regex246.exec(input0);', 'results');
var input1 = "bB";
var results = ["bB", undefined];
shouldBe('regex246.exec(input1);', 'results');
var input2 = "aB";
var results = ["aB", "a"];
shouldBe('regex246.exec(input2);', 'results');
var input3 = "bA";
var results = ["bA", undefined];
shouldBe('regex246.exec(input3);', 'results');
var regex247 = /^(a)?(?:a|b)+$/;
var input0 = "aa";
var results = ["aa", "a"];
shouldBe('regex247.exec(input0);', 'results');
var input1 = "b";
var results = ["b", undefined];
shouldBe('regex247.exec(input1);', 'results');
var input2 = "bb";
var results = ["bb", undefined];
shouldBe('regex247.exec(input2);', 'results');
var input3 = "ab";
var results = ["ab", "a"];
shouldBe('regex247.exec(input3);', 'results');
var regex248 = /^(?:(?=abc)\w{3}:|\d\d)$/;
var input0 = "abc:";
var results = ["abc:"];
shouldBe('regex248.exec(input0);', 'results');
var input1 = "12";
var results = ["12"];
shouldBe('regex248.exec(input1);', 'results');
// Failers
var input2 = "123";
var results = null;
shouldBe('regex248.exec(input2);', 'results');
var input3 = "xyz";
var results = null;
shouldBe('regex248.exec(input3);', 'results');
var regex249 = /^(?:(?!abc)\d\d|\w{3}:)$/;
var input0 = "abc:";
var results = ["abc:"];
shouldBe('regex249.exec(input0);', 'results');
var input1 = "12";
var results = ["12"];
shouldBe('regex249.exec(input1);', 'results');
// Failers
var input2 = "123";
var results = null;
shouldBe('regex249.exec(input2);', 'results');
var input3 = "xyz";
var results = null;
shouldBe('regex249.exec(input3);', 'results');
var regex252 = /(?=\()(\()[^()]+\)|[^()]+/;
var input0 = "abcd";
var results = ["abcd", undefined];
shouldBe('regex252.exec(input0);', 'results');
var input1 = "(abcd)";
var results = ["(abcd)", "("];
shouldBe('regex252.exec(input1);', 'results');
var input2 = "the quick (abcd) fox";
var results = ["the quick ", undefined];
shouldBe('regex252.exec(input2);', 'results');
var input3 = "(abcd";
var results = ["abcd", undefined];
shouldBe('regex252.exec(input3);', 'results');
var regex253 = /^(?:a|(1)(2))+$/;
var input0 = "12";
var results = ["12", "1", "2"];
shouldBe('regex253.exec(input0);', 'results');
var input1 = "12a";
var results = ["12a", undefined, undefined];
shouldBe('regex253.exec(input1);', 'results');
var input2 = "12aa";
var results = ["12aa", undefined, undefined];
shouldBe('regex253.exec(input2);', 'results');
// Failers
var input3 = "1234";
var results = null;
shouldBe('regex253.exec(input3);', 'results');
var regex254 = /(blah)\s+\1/i;
var input0 = "blah blah";
var results = ["blah blah", "blah"];
shouldBe('regex254.exec(input0);', 'results');
var input1 = "BLAH BLAH";
var results = ["BLAH BLAH", "BLAH"];
shouldBe('regex254.exec(input1);', 'results');
var input2 = "Blah Blah";
var results = ["Blah Blah", "Blah"];
shouldBe('regex254.exec(input2);', 'results');
var input3 = "blaH blaH";
var results = ["blaH blaH", "blaH"];
shouldBe('regex254.exec(input3);', 'results');
var input4 = "blah BLAH";
var results = ["blah BLAH", "blah"];
shouldBe('regex254.exec(input4);', 'results');
var input5 = "Blah blah";
var results = ["Blah blah", "Blah"];
shouldBe('regex254.exec(input5);', 'results');
var input6 = "blaH blah";
var results = ["blaH blah", "blaH"];
shouldBe('regex254.exec(input6);', 'results');
var regex255 = /(blah)\s+(?:\1)/i;
var input0 = "blah blah";
var results = ["blah blah", "blah"];
shouldBe('regex255.exec(input0);', 'results');
var input1 = "BLAH BLAH";
var results = ["BLAH BLAH", "BLAH"];
shouldBe('regex255.exec(input1);', 'results');
var input2 = "Blah Blah";
var results = ["Blah Blah", "Blah"];
shouldBe('regex255.exec(input2);', 'results');
var input3 = "blaH blaH";
var results = ["blaH blaH", "blaH"];
shouldBe('regex255.exec(input3);', 'results');
var input4 = "blah BLAH";
var results = ["blah BLAH", "blah"];
shouldBe('regex255.exec(input4);', 'results');
var input5 = "Blah blah";
var results = ["Blah blah", "Blah"];
shouldBe('regex255.exec(input5);', 'results');
var input6 = "blaH blah";
var results = ["blaH blah", "blaH"];
shouldBe('regex255.exec(input6);', 'results');
var regex257 = /(abc|)+/;
var input0 = "abc";
var results = ["abc", "abc"];
shouldBe('regex257.exec(input0);', 'results');
var input1 = "abcabc";
var results = ["abcabc", "abc"];
shouldBe('regex257.exec(input1);', 'results');
var input2 = "abcabcabc";
var results = ["abcabcabc", "abc"];
shouldBe('regex257.exec(input2);', 'results');
var input3 = "xyz";
var results = ["", ""];
shouldBe('regex257.exec(input3);', 'results');
var regex258 = /([a]*)*/;
var input0 = "a";
var results = ["a", "a"];
shouldBe('regex258.exec(input0);', 'results');
var input1 = "aaaaa";
var results = ["aaaaa", "aaaaa"];
shouldBe('regex258.exec(input1);', 'results');
var regex259 = /([ab]*)*/;
var input0 = "a";
var results = ["a", "a"];
shouldBe('regex259.exec(input0);', 'results');
var input1 = "b";
var results = ["b", "b"];
shouldBe('regex259.exec(input1);', 'results');
var input2 = "ababab";
var results = ["ababab", "ababab"];
shouldBe('regex259.exec(input2);', 'results');
var input3 = "aaaabcde";
var results = ["aaaab", "aaaab"];
shouldBe('regex259.exec(input3);', 'results');
var input4 = "bbbb";
var results = ["bbbb", "bbbb"];
shouldBe('regex259.exec(input4);', 'results');
var regex260 = /([^a]*)*/;
var input0 = "b";
var results = ["b", "b"];
shouldBe('regex260.exec(input0);', 'results');
var input1 = "bbbb";
var results = ["bbbb", "bbbb"];
shouldBe('regex260.exec(input1);', 'results');
var input2 = "aaa";
var results = ["", undefined];
shouldBe('regex260.exec(input2);', 'results');
var regex261 = /([^ab]*)*/;
var input0 = "cccc";
var results = ["cccc", "cccc"];
shouldBe('regex261.exec(input0);', 'results');
var input1 = "abab";
var results = ["", undefined];
shouldBe('regex261.exec(input1);', 'results');
var regex262 = /([a]*?)*/;
var input0 = "a";
var results = ["a", "a"];
shouldBe('regex262.exec(input0);', 'results');
var input1 = "aaaa";
var results = ["aaaa", "a"];
shouldBe('regex262.exec(input1);', 'results');
var regex263 = /([ab]*?)*/;
var input0 = "a";
var results = ["a", "a"];
shouldBe('regex263.exec(input0);', 'results');
var input1 = "b";
var results = ["b", "b"];
shouldBe('regex263.exec(input1);', 'results');
var input2 = "abab";
var results = ["abab", "b"];
shouldBe('regex263.exec(input2);', 'results');
var input3 = "baba";
var results = ["baba", "a"];
shouldBe('regex263.exec(input3);', 'results');
var regex264 = /([^a]*?)*/;
var input0 = "b";
var results = ["b", "b"];
shouldBe('regex264.exec(input0);', 'results');
var input1 = "bbbb";
var results = ["bbbb", "b"];
shouldBe('regex264.exec(input1);', 'results');
var input2 = "aaa";
var results = ["", undefined];
shouldBe('regex264.exec(input2);', 'results');
var regex265 = /([^ab]*?)*/;
var input0 = "c";
var results = ["c", "c"];
shouldBe('regex265.exec(input0);', 'results');
var input1 = "cccc";
var results = ["cccc", "c"];
shouldBe('regex265.exec(input1);', 'results');
var input2 = "baba";
var results = ["", undefined];
shouldBe('regex265.exec(input2);', 'results');
var regex269 = /(?=[^a-z]+[a-z])\d{2}-[a-z]{3}-\d{2}|(?![^a-z]+[a-z])\d{2}-\d{2}-\d{2}/;
var input0 = "12-sep-98";
var results = ["12-sep-98"];
shouldBe('regex269.exec(input0);', 'results');
var input1 = "12-09-98";
var results = ["12-09-98"];
shouldBe('regex269.exec(input1);', 'results');
var input2 = "sep-12-98";
var results = null;
shouldBe('regex269.exec(input2);', 'results');
var regex271 = /(?:saturday|sunday)/i;
var input0 = "saturday";
var results = ["saturday"];
shouldBe('regex271.exec(input0);', 'results');
var input1 = "sunday";
var results = ["sunday"];
shouldBe('regex271.exec(input1);', 'results');
var input2 = "Saturday";
var results = ["Saturday"];
shouldBe('regex271.exec(input2);', 'results');
var input3 = "Sunday";
var results = ["Sunday"];
shouldBe('regex271.exec(input3);', 'results');
var input4 = "SATURDAY";
var results = ["SATURDAY"];
shouldBe('regex271.exec(input4);', 'results');
var input5 = "SUNDAY";
var results = ["SUNDAY"];
shouldBe('regex271.exec(input5);', 'results');
var input6 = "SunDay";
var results = ["SunDay"];
shouldBe('regex271.exec(input6);', 'results');
var regex272 = /([aA][bB][cC]|[bB][bB])x/;
var input0 = "abcx";
var results = ["abcx", "abc"];
shouldBe('regex272.exec(input0);', 'results');
var input1 = "aBCx";
var results = ["aBCx", "aBC"];
shouldBe('regex272.exec(input1);', 'results');
var input2 = "bbx";
var results = ["bbx", "bb"];
shouldBe('regex272.exec(input2);', 'results');
var input3 = "BBx";
var results = ["BBx", "BB"];
shouldBe('regex272.exec(input3);', 'results');
// Failers
var input4 = "abcX";
var results = null;
shouldBe('regex272.exec(input4);', 'results');
var input5 = "aBCX";
var results = null;
shouldBe('regex272.exec(input5);', 'results');
var input6 = "bbX";
var results = null;
shouldBe('regex272.exec(input6);', 'results');
var input7 = "BBX";
var results = null;
shouldBe('regex272.exec(input7);', 'results');
var regex273 = /^([ab][cd]|[ef])/i;
var input0 = "ac";
var results = ["ac", "ac"];
shouldBe('regex273.exec(input0);', 'results');
var input1 = "aC";
var results = ["aC", "aC"];
shouldBe('regex273.exec(input1);', 'results');
var input2 = "bD";
var results = ["bD", "bD"];
shouldBe('regex273.exec(input2);', 'results');
var input3 = "elephant";
var results = ["e", "e"];
shouldBe('regex273.exec(input3);', 'results');
var input4 = "Europe";
var results = ["E", "E"];
shouldBe('regex273.exec(input4);', 'results');
var input5 = "frog";
var results = ["f", "f"];
shouldBe('regex273.exec(input5);', 'results');
var input6 = "France";
var results = ["F", "F"];
shouldBe('regex273.exec(input6);', 'results');
// Failers
var input7 = "Africa";
var results = null;
shouldBe('regex273.exec(input7);', 'results');
var regex274 = /^(ab|a[b-cB-C]d|x[yY]|[zZ])/;
var input0 = "ab";
var results = ["ab", "ab"];
shouldBe('regex274.exec(input0);', 'results');
var input1 = "aBd";
var results = ["aBd", "aBd"];
shouldBe('regex274.exec(input1);', 'results');
var input2 = "xy";
var results = ["xy", "xy"];
shouldBe('regex274.exec(input2);', 'results');
var input3 = "xY";
var results = ["xY", "xY"];
shouldBe('regex274.exec(input3);', 'results');
var input4 = "zebra";
var results = ["z", "z"];
shouldBe('regex274.exec(input4);', 'results');
var input5 = "Zambesi";
var results = ["Z", "Z"];
shouldBe('regex274.exec(input5);', 'results');
// Failers
var input6 = "aCD";
var results = null;
shouldBe('regex274.exec(input6);', 'results');
var input7 = "XY";
var results = null;
shouldBe('regex274.exec(input7);', 'results');
var regex277 = /^(a\1?){4}$/;
var input0 = "a";
var results = null;
shouldBe('regex277.exec(input0);', 'results');
var input1 = "aa";
var results = null;
shouldBe('regex277.exec(input1);', 'results');
var input2 = "aaa";
var results = null;
shouldBe('regex277.exec(input2);', 'results');
var input3 = "aaaa";
var results = ["aaaa", "a"];
shouldBe('regex277.exec(input3);', 'results');
var input4 = "aaaaa";
var results = null;
shouldBe('regex277.exec(input4);', 'results');
var input5 = "aaaaaaa";
var results = null;
shouldBe('regex277.exec(input5);', 'results');
var input6 = "aaaaaaaa";
var results = null;
shouldBe('regex277.exec(input6);', 'results');
var input7 = "aaaaaaaaa";
var results = null;
shouldBe('regex277.exec(input7);', 'results');
var input8 = "aaaaaaaaaa";
var results = null;
shouldBe('regex277.exec(input8);', 'results');
var input9 = "aaaaaaaaaaa";
var results = null;
shouldBe('regex277.exec(input9);', 'results');
var input10 = "aaaaaaaaaaaa";
var results = null;
shouldBe('regex277.exec(input10);', 'results');
var input11 = "aaaaaaaaaaaaa";
var results = null;
shouldBe('regex277.exec(input11);', 'results');
var input12 = "aaaaaaaaaaaaaa";
var results = null;
shouldBe('regex277.exec(input12);', 'results');
var input13 = "aaaaaaaaaaaaaaa";
var results = null;
shouldBe('regex277.exec(input13);', 'results');
var input14 = "aaaaaaaaaaaaaaaa";
var results = null;
shouldBe('regex277.exec(input14);', 'results');
var regex278 = /^(a\1?)(a\1?)(a\2?)(a\3?)$/;
var input0 = "a";
var results = null;
shouldBe('regex278.exec(input0);', 'results');
var input1 = "aa";
var results = null;
shouldBe('regex278.exec(input1);', 'results');
var input2 = "aaa";
var results = null;
shouldBe('regex278.exec(input2);', 'results');
var input3 = "aaaa";
var results = ["aaaa", "a", "a", "a", "a"];
shouldBe('regex278.exec(input3);', 'results');
var input4 = "aaaaa";
var results = ["aaaaa", "a", "aa", "a", "a"];
shouldBe('regex278.exec(input4);', 'results');
var input5 = "aaaaaa";
var results = ["aaaaaa", "a", "aa", "a", "aa"];
shouldBe('regex278.exec(input5);', 'results');
var input6 = "aaaaaaa";
var results = ["aaaaaaa", "a", "aa", "aaa", "a"];
shouldBe('regex278.exec(input6);', 'results');
var input7 = "aaaaaaaa";
var results = null;
shouldBe('regex278.exec(input7);', 'results');
var input8 = "aaaaaaaaa";
var results = null;
shouldBe('regex278.exec(input8);', 'results');
var input9 = "aaaaaaaaaa";
var results = ["aaaaaaaaaa", "a", "aa", "aaa", "aaaa"];
shouldBe('regex278.exec(input9);', 'results');
var input10 = "aaaaaaaaaaa";
var results = null;
shouldBe('regex278.exec(input10);', 'results');
var input11 = "aaaaaaaaaaaa";
var results = null;
shouldBe('regex278.exec(input11);', 'results');
var input12 = "aaaaaaaaaaaaa";
var results = null;
shouldBe('regex278.exec(input12);', 'results');
var input13 = "aaaaaaaaaaaaaa";
var results = null;
shouldBe('regex278.exec(input13);', 'results');
var input14 = "aaaaaaaaaaaaaaa";
var results = null;
shouldBe('regex278.exec(input14);', 'results');
var input15 = "aaaaaaaaaaaaaaaa";
var results = null;
shouldBe('regex278.exec(input15);', 'results');
var regex279 = /abc/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex279.exec(input0);', 'results');
var input1 = "xabcy";
var results = ["abc"];
shouldBe('regex279.exec(input1);', 'results');
var input2 = "ababc";
var results = ["abc"];
shouldBe('regex279.exec(input2);', 'results');
// Failers
var input3 = "xbc";
var results = null;
shouldBe('regex279.exec(input3);', 'results');
var input4 = "axc";
var results = null;
shouldBe('regex279.exec(input4);', 'results');
var input5 = "abx";
var results = null;
shouldBe('regex279.exec(input5);', 'results');
var regex280 = /ab*c/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex280.exec(input0);', 'results');
var regex281 = /ab*bc/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex281.exec(input0);', 'results');
var input1 = "abbc";
var results = ["abbc"];
shouldBe('regex281.exec(input1);', 'results');
var input2 = "abbbbc";
var results = ["abbbbc"];
shouldBe('regex281.exec(input2);', 'results');
var regex282 = /.{1}/;
var input0 = "abbbbc";
var results = ["a"];
shouldBe('regex282.exec(input0);', 'results');
var regex283 = /.{3,4}/;
var input0 = "abbbbc";
var results = ["abbb"];
shouldBe('regex283.exec(input0);', 'results');
var regex284 = /ab{0,}bc/;
var input0 = "abbbbc";
var results = ["abbbbc"];
shouldBe('regex284.exec(input0);', 'results');
var regex285 = /ab+bc/;
var input0 = "abbc";
var results = ["abbc"];
shouldBe('regex285.exec(input0);', 'results');
// Failers
var input1 = "abc";
var results = null;
shouldBe('regex285.exec(input1);', 'results');
var input2 = "abq";
var results = null;
shouldBe('regex285.exec(input2);', 'results');
var regex286 = /ab+bc/;
var input0 = "abbbbc";
var results = ["abbbbc"];
shouldBe('regex286.exec(input0);', 'results');
var regex287 = /ab{1,}bc/;
var input0 = "abbbbc";
var results = ["abbbbc"];
shouldBe('regex287.exec(input0);', 'results');
var regex288 = /ab{1,3}bc/;
var input0 = "abbbbc";
var results = ["abbbbc"];
shouldBe('regex288.exec(input0);', 'results');
var regex289 = /ab{3,4}bc/;
var input0 = "abbbbc";
var results = ["abbbbc"];
shouldBe('regex289.exec(input0);', 'results');
var regex290 = /ab{4,5}bc/;
// Failers
var input0 = "abq";
var results = null;
shouldBe('regex290.exec(input0);', 'results');
var input1 = "abbbbc";
var results = null;
shouldBe('regex290.exec(input1);', 'results');
var regex291 = /ab?bc/;
var input0 = "abbc";
var results = ["abbc"];
shouldBe('regex291.exec(input0);', 'results');
var input1 = "abc";
var results = ["abc"];
shouldBe('regex291.exec(input1);', 'results');
var regex292 = /ab{0,1}bc/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex292.exec(input0);', 'results');
var regex293 = /ab?c/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex293.exec(input0);', 'results');
var regex294 = /ab{0,1}c/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex294.exec(input0);', 'results');
var regex295 = /^abc/;
var input0 = "abcc";
var results = ["abc"];
shouldBe('regex295.exec(input0);', 'results');
var regex296 = /abc$/;
var input0 = "aabc";
var results = ["abc"];
shouldBe('regex296.exec(input0);', 'results');
// Failers
var input1 = "aabc";
var results = ["abc"];
shouldBe('regex296.exec(input1);', 'results');
var input2 = "aabcd";
var results = null;
shouldBe('regex296.exec(input2);', 'results');
var regex297 = /^/;
var input0 = "abc";
var results = [""];
shouldBe('regex297.exec(input0);', 'results');
var regex298 = /$/;
var input0 = "abc";
var results = [""];
shouldBe('regex298.exec(input0);', 'results');
var regex299 = /a.c/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex299.exec(input0);', 'results');
var input1 = "axc";
var results = ["axc"];
shouldBe('regex299.exec(input1);', 'results');
var regex300 = /a.*c/;
var input0 = "axyzc";
var results = ["axyzc"];
shouldBe('regex300.exec(input0);', 'results');
var regex301 = /a[bc]d/;
var input0 = "abd";
var results = ["abd"];
shouldBe('regex301.exec(input0);', 'results');
// Failers
var input1 = "axyzd";
var results = null;
shouldBe('regex301.exec(input1);', 'results');
var input2 = "abc";
var results = null;
shouldBe('regex301.exec(input2);', 'results');
var regex302 = /a[b-d]e/;
var input0 = "ace";
var results = ["ace"];
shouldBe('regex302.exec(input0);', 'results');
var regex303 = /a[b-d]/;
var input0 = "aac";
var results = ["ac"];
shouldBe('regex303.exec(input0);', 'results');
var regex304 = /a[-b]/;
var input0 = "a-";
var results = ["a-"];
shouldBe('regex304.exec(input0);', 'results');
var regex305 = /a[b-]/;
var input0 = "a-";
var results = ["a-"];
shouldBe('regex305.exec(input0);', 'results');
var regex306 = /a]/;
var input0 = "a]";
var results = ["a]"];
shouldBe('regex306.exec(input0);', 'results');
var regex307 = /a[\]]b/;
var input0 = "a]b";
var results = ["a]b"];
shouldBe('regex307.exec(input0);', 'results');
var regex308 = /a[^bc]d/;
var input0 = "aed";
var results = ["aed"];
shouldBe('regex308.exec(input0);', 'results');
// Failers
var input1 = "abd";
var results = null;
shouldBe('regex308.exec(input1);', 'results');
var input2 = "abd";
var results = null;
shouldBe('regex308.exec(input2);', 'results');
var regex309 = /a[^-b]c/;
var input0 = "adc";
var results = ["adc"];
shouldBe('regex309.exec(input0);', 'results');
var regex310 = /a[^\]b]c/;
var input0 = "adc";
var results = ["adc"];
shouldBe('regex310.exec(input0);', 'results');
var input1 = "a-c";
var results = ["a-c"];
shouldBe('regex310.exec(input1);', 'results');
// Failers
var input2 = "a]c";
var results = null;
shouldBe('regex310.exec(input2);', 'results');
var regex311 = /\ba\b/;
var input0 = "a-";
var results = ["a"];
shouldBe('regex311.exec(input0);', 'results');
var input1 = "-a";
var results = ["a"];
shouldBe('regex311.exec(input1);', 'results');
var input2 = "-a-";
var results = ["a"];
shouldBe('regex311.exec(input2);', 'results');
var regex312 = /\by\b/;
// Failers
var input0 = "xy";
var results = null;
shouldBe('regex312.exec(input0);', 'results');
var input1 = "yz";
var results = null;
shouldBe('regex312.exec(input1);', 'results');
var input2 = "xyz";
var results = null;
shouldBe('regex312.exec(input2);', 'results');
var regex313 = /\Ba\B/;
// Failers
var input0 = "a-";
var results = null;
shouldBe('regex313.exec(input0);', 'results');
var input1 = "-a";
var results = null;
shouldBe('regex313.exec(input1);', 'results');
var input2 = "-a-";
var results = null;
shouldBe('regex313.exec(input2);', 'results');
var regex314 = /\By\b/;
var input0 = "xy";
var results = ["y"];
shouldBe('regex314.exec(input0);', 'results');
var regex315 = /\by\B/;
var input0 = "yz";
var results = ["y"];
shouldBe('regex315.exec(input0);', 'results');
var regex316 = /\By\B/;
var input0 = "xyz";
var results = ["y"];
shouldBe('regex316.exec(input0);', 'results');
var regex317 = /\w/;
var input0 = "a";
var results = ["a"];
shouldBe('regex317.exec(input0);', 'results');
var regex318 = /\W/;
var input0 = "-";
var results = ["-"];
shouldBe('regex318.exec(input0);', 'results');
// Failers
var input1 = "-";
var results = ["-"];
shouldBe('regex318.exec(input1);', 'results');
var input2 = "a";
var results = null;
shouldBe('regex318.exec(input2);', 'results');
var regex319 = /a\sb/;
var input0 = "a b";
var results = ["a b"];
shouldBe('regex319.exec(input0);', 'results');
var regex320 = /a\Sb/;
var input0 = "a-b";
var results = ["a-b"];
shouldBe('regex320.exec(input0);', 'results');
// Failers
var input1 = "a-b";
var results = ["a-b"];
shouldBe('regex320.exec(input1);', 'results');
var input2 = "a b";
var results = null;
shouldBe('regex320.exec(input2);', 'results');
var regex321 = /\d/;
var input0 = "1";
var results = ["1"];
shouldBe('regex321.exec(input0);', 'results');
var regex322 = /\D/;
var input0 = "-";
var results = ["-"];
shouldBe('regex322.exec(input0);', 'results');
// Failers
var input1 = "-";
var results = ["-"];
shouldBe('regex322.exec(input1);', 'results');
var input2 = "1";
var results = null;
shouldBe('regex322.exec(input2);', 'results');
var regex323 = /[\w]/;
var input0 = "a";
var results = ["a"];
shouldBe('regex323.exec(input0);', 'results');
var regex324 = /[\W]/;
var input0 = "-";
var results = ["-"];
shouldBe('regex324.exec(input0);', 'results');
// Failers
var input1 = "-";
var results = ["-"];
shouldBe('regex324.exec(input1);', 'results');
var input2 = "a";
var results = null;
shouldBe('regex324.exec(input2);', 'results');
var regex325 = /a[\s]b/;
var input0 = "a b";
var results = ["a b"];
shouldBe('regex325.exec(input0);', 'results');
var regex326 = /a[\S]b/;
var input0 = "a-b";
var results = ["a-b"];
shouldBe('regex326.exec(input0);', 'results');
// Failers
var input1 = "a-b";
var results = ["a-b"];
shouldBe('regex326.exec(input1);', 'results');
var input2 = "a b";
var results = null;
shouldBe('regex326.exec(input2);', 'results');
var regex327 = /[\d]/;
var input0 = "1";
var results = ["1"];
shouldBe('regex327.exec(input0);', 'results');
var regex328 = /[\D]/;
var input0 = "-";
var results = ["-"];
shouldBe('regex328.exec(input0);', 'results');
// Failers
var input1 = "-";
var results = ["-"];
shouldBe('regex328.exec(input1);', 'results');
var input2 = "1";
var results = null;
shouldBe('regex328.exec(input2);', 'results');
var regex329 = /ab|cd/;
var input0 = "abc";
var results = ["ab"];
shouldBe('regex329.exec(input0);', 'results');
var input1 = "abcd";
var results = ["ab"];
shouldBe('regex329.exec(input1);', 'results');
var regex330 = /()ef/;
var input0 = "def";
var results = ["ef", ""];
shouldBe('regex330.exec(input0);', 'results');
var regex331 = /a\(b/;
var input0 = "a(b";
var results = ["a(b"];
shouldBe('regex331.exec(input0);', 'results');
var regex332 = /a\(*b/;
var input0 = "ab";
var results = ["ab"];
shouldBe('regex332.exec(input0);', 'results');
var input1 = "a((b";
var results = ["a((b"];
shouldBe('regex332.exec(input1);', 'results');
var regex333 = /a\\b/;
var input0 = "a\b";
var results = null;
shouldBe('regex333.exec(input0);', 'results');
var regex334 = /((a))/;
var input0 = "abc";
var results = ["a", "a", "a"];
shouldBe('regex334.exec(input0);', 'results');
var regex335 = /(a)b(c)/;
var input0 = "abc";
var results = ["abc", "a", "c"];
shouldBe('regex335.exec(input0);', 'results');
var regex336 = /a+b+c/;
var input0 = "aabbabc";
var results = ["abc"];
shouldBe('regex336.exec(input0);', 'results');
var regex337 = /a{1,}b{1,}c/;
var input0 = "aabbabc";
var results = ["abc"];
shouldBe('regex337.exec(input0);', 'results');
var regex338 = /a.+?c/;
var input0 = "abcabc";
var results = ["abc"];
shouldBe('regex338.exec(input0);', 'results');
var regex339 = /(a+|b)*/;
var input0 = "ab";
var results = ["ab", "b"];
shouldBe('regex339.exec(input0);', 'results');
var regex340 = /(a+|b){0,}/;
var input0 = "ab";
var results = ["ab", "b"];
shouldBe('regex340.exec(input0);', 'results');
var regex341 = /(a+|b)+/;
var input0 = "ab";
var results = ["ab", "b"];
shouldBe('regex341.exec(input0);', 'results');
var regex342 = /(a+|b){1,}/;
var input0 = "ab";
var results = ["ab", "b"];
shouldBe('regex342.exec(input0);', 'results');
var regex343 = /(a+|b)?/;
var input0 = "ab";
var results = ["a", "a"];
shouldBe('regex343.exec(input0);', 'results');
var regex344 = /(a+|b){0,1}/;
var input0 = "ab";
var results = ["a", "a"];
shouldBe('regex344.exec(input0);', 'results');
var regex345 = /[^ab]*/;
var input0 = "cde";
var results = ["cde"];
shouldBe('regex345.exec(input0);', 'results');
var regex346 = /abc/;
// Failers
var input0 = "b";
var results = null;
shouldBe('regex346.exec(input0);', 'results');
var regex347 = /([abc])*d/;
var input0 = "abbbcd";
var results = ["abbbcd", "c"];
shouldBe('regex347.exec(input0);', 'results');
var regex348 = /([abc])*bcd/;
var input0 = "abcd";
var results = ["abcd", "a"];
shouldBe('regex348.exec(input0);', 'results');
var regex349 = /a|b|c|d|e/;
var input0 = "e";
var results = ["e"];
shouldBe('regex349.exec(input0);', 'results');
var regex350 = /(a|b|c|d|e)f/;
var input0 = "ef";
var results = ["ef", "e"];
shouldBe('regex350.exec(input0);', 'results');
var regex351 = /abcd*efg/;
var input0 = "abcdefg";
var results = ["abcdefg"];
shouldBe('regex351.exec(input0);', 'results');
var regex352 = /ab*/;
var input0 = "xabyabbbz";
var results = ["ab"];
shouldBe('regex352.exec(input0);', 'results');
var input1 = "xayabbbz";
var results = ["a"];
shouldBe('regex352.exec(input1);', 'results');
var regex353 = /(ab|cd)e/;
var input0 = "abcde";
var results = ["cde", "cd"];
shouldBe('regex353.exec(input0);', 'results');
var regex354 = /[abhgefdc]ij/;
var input0 = "hij";
var results = ["hij"];
shouldBe('regex354.exec(input0);', 'results');
var regex355 = /(abc|)ef/;
var input0 = "abcdef";
var results = ["ef", ""];
shouldBe('regex355.exec(input0);', 'results');
var regex356 = /(a|b)c*d/;
var input0 = "abcd";
var results = ["bcd", "b"];
shouldBe('regex356.exec(input0);', 'results');
var regex357 = /(ab|ab*)bc/;
var input0 = "abc";
var results = ["abc", "a"];
shouldBe('regex357.exec(input0);', 'results');
var regex358 = /a([bc]*)c*/;
var input0 = "abc";
var results = ["abc", "bc"];
shouldBe('regex358.exec(input0);', 'results');
var regex359 = /a([bc]*)(c*d)/;
var input0 = "abcd";
var results = ["abcd", "bc", "d"];
shouldBe('regex359.exec(input0);', 'results');
var regex360 = /a([bc]+)(c*d)/;
var input0 = "abcd";
var results = ["abcd", "bc", "d"];
shouldBe('regex360.exec(input0);', 'results');
var regex361 = /a([bc]*)(c+d)/;
var input0 = "abcd";
var results = ["abcd", "b", "cd"];
shouldBe('regex361.exec(input0);', 'results');
var regex362 = /a[bcd]*dcdcde/;
var input0 = "adcdcde";
var results = ["adcdcde"];
shouldBe('regex362.exec(input0);', 'results');
var regex363 = /a[bcd]+dcdcde/;
// Failers
var input0 = "abcde";
var results = null;
shouldBe('regex363.exec(input0);', 'results');
var input1 = "adcdcde";
var results = null;
shouldBe('regex363.exec(input1);', 'results');
var regex364 = /(ab|a)b*c/;
var input0 = "abc";
var results = ["abc", "ab"];
shouldBe('regex364.exec(input0);', 'results');
var regex365 = /((a)(b)c)(d)/;
var input0 = "abcd";
var results = ["abcd", "abc", "a", "b", "d"];
shouldBe('regex365.exec(input0);', 'results');
var regex366 = /[a-zA-Z_][a-zA-Z0-9_]*/;
var input0 = "alpha";
var results = ["alpha"];
shouldBe('regex366.exec(input0);', 'results');
var regex367 = /^a(bc+|b[eh])g|.h$/;
var input0 = "abh";
var results = ["bh", undefined];
shouldBe('regex367.exec(input0);', 'results');
var regex368 = /(bc+d$|ef*g.|h?i(j|k))/;
var input0 = "effgz";
var results = ["effgz", "effgz", undefined];
shouldBe('regex368.exec(input0);', 'results');
var input1 = "ij";
var results = ["ij", "ij", "j"];
shouldBe('regex368.exec(input1);', 'results');
var input2 = "reffgz";
var results = ["effgz", "effgz", undefined];
shouldBe('regex368.exec(input2);', 'results');
// Failers
var input3 = "effg";
var results = null;
shouldBe('regex368.exec(input3);', 'results');
var input4 = "bcdd";
var results = null;
shouldBe('regex368.exec(input4);', 'results');
var regex369 = /((((((((((a))))))))))/;
var input0 = "a";
var results = ["a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a"];
shouldBe('regex369.exec(input0);', 'results');
var regex370 = /((((((((((a))))))))))\10/;
var input0 = "aa";
var results = ["aa", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a"];
shouldBe('regex370.exec(input0);', 'results');
var regex371 = /(((((((((a)))))))))/;
var input0 = "a";
var results = ["a", "a", "a", "a", "a", "a", "a", "a", "a", "a"];
shouldBe('regex371.exec(input0);', 'results');
var regex372 = /multiple words of text/;
// Failers
var input0 = "aa";
var results = null;
shouldBe('regex372.exec(input0);', 'results');
var input1 = "uh-uh";
var results = null;
shouldBe('regex372.exec(input1);', 'results');
var regex373 = /multiple words/;
var input0 = "multiple words, yeah";
var results = ["multiple words"];
shouldBe('regex373.exec(input0);', 'results');
var regex374 = /(.*)c(.*)/;
var input0 = "abcde";
var results = ["abcde", "ab", "de"];
shouldBe('regex374.exec(input0);', 'results');
var regex375 = /\((.*), (.*)\)/;
var input0 = "(a, b)";
var results = ["(a, b)", "a", "b"];
shouldBe('regex375.exec(input0);', 'results');
var regex376 = /abcd/;
var input0 = "abcd";
var results = ["abcd"];
shouldBe('regex376.exec(input0);', 'results');
var regex377 = /a(bc)d/;
var input0 = "abcd";
var results = ["abcd", "bc"];
shouldBe('regex377.exec(input0);', 'results');
var regex378 = /a[-]?c/;
var input0 = "ac";
var results = ["ac"];
shouldBe('regex378.exec(input0);', 'results');
var regex379 = /(abc)\1/;
var input0 = "abcabc";
var results = ["abcabc", "abc"];
shouldBe('regex379.exec(input0);', 'results');
var regex380 = /([a-c]*)\1/;
var input0 = "abcabc";
var results = ["abcabc", "abc"];
shouldBe('regex380.exec(input0);', 'results');
var regex381 = /(a)|\1/;
var input0 = "a";
var results = ["a", "a"];
shouldBe('regex381.exec(input0);', 'results');
var input1 = "ab";
var results = ["a", "a"];
shouldBe('regex381.exec(input1);', 'results');
var input2 = "x";
var results = ["", undefined];
shouldBe('regex381.exec(input2);', 'results');
var regex382 = /(([a-c])b*?\2)*/;
var input0 = "ababbbcbc";
var results = ["ababb", "bb", "b"];
shouldBe('regex382.exec(input0);', 'results');
var regex383 = /(([a-c])b*?\2){3}/;
var input0 = "ababbbcbc";
var results = ["ababbbcbc", "cbc", "c"];
shouldBe('regex383.exec(input0);', 'results');
var regex384 = /((\3|b)\2(a)x)+/;
var input0 = "aaaxabaxbaaxbbax";
var results = ["ax", "ax", "", "a"];
shouldBe('regex384.exec(input0);', 'results');
var regex385 = /((\3|b)\2(a)){2,}/;
var input0 = "bbaababbabaaaaabbaaaabba";
var results = ["bbaa", "a", "", "a"];
shouldBe('regex385.exec(input0);', 'results');
var regex386 = /abc/i;
var input0 = "ABC";
var results = ["ABC"];
shouldBe('regex386.exec(input0);', 'results');
var input1 = "XABCY";
var results = ["ABC"];
shouldBe('regex386.exec(input1);', 'results');
var input2 = "ABABC";
var results = ["ABC"];
shouldBe('regex386.exec(input2);', 'results');
// Failers
var input3 = "aaxabxbaxbbx";
var results = null;
shouldBe('regex386.exec(input3);', 'results');
var input4 = "XBC";
var results = null;
shouldBe('regex386.exec(input4);', 'results');
var input5 = "AXC";
var results = null;
shouldBe('regex386.exec(input5);', 'results');
var input6 = "ABX";
var results = null;
shouldBe('regex386.exec(input6);', 'results');
var regex387 = /ab*c/i;
var input0 = "ABC";
var results = ["ABC"];
shouldBe('regex387.exec(input0);', 'results');
var regex388 = /ab*bc/i;
var input0 = "ABC";
var results = ["ABC"];
shouldBe('regex388.exec(input0);', 'results');
var input1 = "ABBC";
var results = ["ABBC"];
shouldBe('regex388.exec(input1);', 'results');
var regex389 = /ab*?bc/i;
var input0 = "ABBBBC";
var results = ["ABBBBC"];
shouldBe('regex389.exec(input0);', 'results');
var regex390 = /ab{0,}?bc/i;
var input0 = "ABBBBC";
var results = ["ABBBBC"];
shouldBe('regex390.exec(input0);', 'results');
var regex391 = /ab+?bc/i;
var input0 = "ABBC";
var results = ["ABBC"];
shouldBe('regex391.exec(input0);', 'results');
var regex392 = /ab+bc/i;
// Failers
var input0 = "ABC";
var results = null;
shouldBe('regex392.exec(input0);', 'results');
var input1 = "ABQ";
var results = null;
shouldBe('regex392.exec(input1);', 'results');
var regex393 = /ab+bc/i;
var input0 = "ABBBBC";
var results = ["ABBBBC"];
shouldBe('regex393.exec(input0);', 'results');
var regex394 = /ab{1,}?bc/i;
var input0 = "ABBBBC";
var results = ["ABBBBC"];
shouldBe('regex394.exec(input0);', 'results');
var regex395 = /ab{1,3}?bc/i;
var input0 = "ABBBBC";
var results = ["ABBBBC"];
shouldBe('regex395.exec(input0);', 'results');
var regex396 = /ab{3,4}?bc/i;
var input0 = "ABBBBC";
var results = ["ABBBBC"];
shouldBe('regex396.exec(input0);', 'results');
var regex397 = /ab{4,5}?bc/i;
// Failers
var input0 = "ABQ";
var results = null;
shouldBe('regex397.exec(input0);', 'results');
var input1 = "ABBBBC";
var results = null;
shouldBe('regex397.exec(input1);', 'results');
var regex398 = /ab??bc/i;
var input0 = "ABBC";
var results = ["ABBC"];
shouldBe('regex398.exec(input0);', 'results');
var input1 = "ABC";
var results = ["ABC"];
shouldBe('regex398.exec(input1);', 'results');
var regex399 = /ab{0,1}?bc/i;
var input0 = "ABC";
var results = ["ABC"];
shouldBe('regex399.exec(input0);', 'results');
var regex400 = /ab??c/i;
var input0 = "ABC";
var results = ["ABC"];
shouldBe('regex400.exec(input0);', 'results');
var regex401 = /ab{0,1}?c/i;
var input0 = "ABC";
var results = ["ABC"];
shouldBe('regex401.exec(input0);', 'results');
var regex402 = /^abc$/i;
var input0 = "ABC";
var results = ["ABC"];
shouldBe('regex402.exec(input0);', 'results');
// Failers
var input1 = "ABBBBC";
var results = null;
shouldBe('regex402.exec(input1);', 'results');
var input2 = "ABCC";
var results = null;
shouldBe('regex402.exec(input2);', 'results');
var regex403 = /^abc/i;
var input0 = "ABCC";
var results = ["ABC"];
shouldBe('regex403.exec(input0);', 'results');
var regex404 = /abc$/i;
var input0 = "AABC";
var results = ["ABC"];
shouldBe('regex404.exec(input0);', 'results');
var regex405 = /^/i;
var input0 = "ABC";
var results = [""];
shouldBe('regex405.exec(input0);', 'results');
var regex406 = /$/i;
var input0 = "ABC";
var results = [""];
shouldBe('regex406.exec(input0);', 'results');
var regex407 = /a.c/i;
var input0 = "ABC";
var results = ["ABC"];
shouldBe('regex407.exec(input0);', 'results');
var input1 = "AXC";
var results = ["AXC"];
shouldBe('regex407.exec(input1);', 'results');
var regex408 = /a.*?c/i;
var input0 = "AXYZC";
var results = ["AXYZC"];
shouldBe('regex408.exec(input0);', 'results');
var regex409 = /a.*c/i;
// Failers
var input0 = "AABC";
var results = ["AABC"];
shouldBe('regex409.exec(input0);', 'results');
var input1 = "AXYZD";
var results = null;
shouldBe('regex409.exec(input1);', 'results');
var regex410 = /a[bc]d/i;
var input0 = "ABD";
var results = ["ABD"];
shouldBe('regex410.exec(input0);', 'results');
var regex411 = /a[b-d]e/i;
var input0 = "ACE";
var results = ["ACE"];
shouldBe('regex411.exec(input0);', 'results');
// Failers
var input1 = "ABC";
var results = null;
shouldBe('regex411.exec(input1);', 'results');
var input2 = "ABD";
var results = null;
shouldBe('regex411.exec(input2);', 'results');
var regex412 = /a[b-d]/i;
var input0 = "AAC";
var results = ["AC"];
shouldBe('regex412.exec(input0);', 'results');
var regex413 = /a[-b]/i;
var input0 = "A-";
var results = ["A-"];
shouldBe('regex413.exec(input0);', 'results');
var regex414 = /a[b-]/i;
var input0 = "A-";
var results = ["A-"];
shouldBe('regex414.exec(input0);', 'results');
var regex415 = /a]/i;
var input0 = "A]";
var results = ["A]"];
shouldBe('regex415.exec(input0);', 'results');
var regex416 = /a[\]]b/i;
var input0 = "A]B";
var results = ["A]B"];
shouldBe('regex416.exec(input0);', 'results');
var regex417 = /a[^bc]d/i;
var input0 = "AED";
var results = ["AED"];
shouldBe('regex417.exec(input0);', 'results');
var regex418 = /a[^-b]c/i;
var input0 = "ADC";
var results = ["ADC"];
shouldBe('regex418.exec(input0);', 'results');
// Failers
var input1 = "ABD";
var results = null;
shouldBe('regex418.exec(input1);', 'results');
var input2 = "A-C";
var results = null;
shouldBe('regex418.exec(input2);', 'results');
var regex419 = /a[^\]b]c/i;
var input0 = "ADC";
var results = ["ADC"];
shouldBe('regex419.exec(input0);', 'results');
var regex420 = /ab|cd/i;
var input0 = "ABC";
var results = ["AB"];
shouldBe('regex420.exec(input0);', 'results');
var input1 = "ABCD";
var results = ["AB"];
shouldBe('regex420.exec(input1);', 'results');
var regex421 = /()ef/i;
var input0 = "DEF";
var results = ["EF", ""];
shouldBe('regex421.exec(input0);', 'results');
var regex422 = /$b/i;
// Failers
var input0 = "A]C";
var results = null;
shouldBe('regex422.exec(input0);', 'results');
var input1 = "B";
var results = null;
shouldBe('regex422.exec(input1);', 'results');
var regex423 = /a\(b/i;
var input0 = "A(B";
var results = ["A(B"];
shouldBe('regex423.exec(input0);', 'results');
var regex424 = /a\(*b/i;
var input0 = "AB";
var results = ["AB"];
shouldBe('regex424.exec(input0);', 'results');
var input1 = "A((B";
var results = ["A((B"];
shouldBe('regex424.exec(input1);', 'results');
var regex425 = /a\\b/i;
var input0 = "A\B";
var results = null;
shouldBe('regex425.exec(input0);', 'results');
var regex426 = /((a))/i;
var input0 = "ABC";
var results = ["A", "A", "A"];
shouldBe('regex426.exec(input0);', 'results');
var regex427 = /(a)b(c)/i;
var input0 = "ABC";
var results = ["ABC", "A", "C"];
shouldBe('regex427.exec(input0);', 'results');
var regex428 = /a+b+c/i;
var input0 = "AABBABC";
var results = ["ABC"];
shouldBe('regex428.exec(input0);', 'results');
var regex429 = /a{1,}b{1,}c/i;
var input0 = "AABBABC";
var results = ["ABC"];
shouldBe('regex429.exec(input0);', 'results');
var regex430 = /a.+?c/i;
var input0 = "ABCABC";
var results = ["ABC"];
shouldBe('regex430.exec(input0);', 'results');
var regex431 = /a.*?c/i;
var input0 = "ABCABC";
var results = ["ABC"];
shouldBe('regex431.exec(input0);', 'results');
var regex432 = /a.{0,5}?c/i;
var input0 = "ABCABC";
var results = ["ABC"];
shouldBe('regex432.exec(input0);', 'results');
var regex433 = /(a+|b)*/i;
var input0 = "AB";
var results = ["AB", "B"];
shouldBe('regex433.exec(input0);', 'results');
var regex434 = /(a+|b){0,}/i;
var input0 = "AB";
var results = ["AB", "B"];
shouldBe('regex434.exec(input0);', 'results');
var regex435 = /(a+|b)+/i;
var input0 = "AB";
var results = ["AB", "B"];
shouldBe('regex435.exec(input0);', 'results');
var regex436 = /(a+|b){1,}/i;
var input0 = "AB";
var results = ["AB", "B"];
shouldBe('regex436.exec(input0);', 'results');
var regex437 = /(a+|b)?/i;
var input0 = "AB";
var results = ["A", "A"];
shouldBe('regex437.exec(input0);', 'results');
var regex438 = /(a+|b){0,1}/i;
var input0 = "AB";
var results = ["A", "A"];
shouldBe('regex438.exec(input0);', 'results');
var regex439 = /(a+|b){0,1}?/i;
var input0 = "AB";
var results = ["", undefined];
shouldBe('regex439.exec(input0);', 'results');
var regex440 = /[^ab]*/i;
var input0 = "CDE";
var results = ["CDE"];
shouldBe('regex440.exec(input0);', 'results');
var regex441 = /([abc])*d/i;
var input0 = "ABBBCD";
var results = ["ABBBCD", "C"];
shouldBe('regex441.exec(input0);', 'results');
var regex442 = /([abc])*bcd/i;
var input0 = "ABCD";
var results = ["ABCD", "A"];
shouldBe('regex442.exec(input0);', 'results');
var regex443 = /a|b|c|d|e/i;
var input0 = "E";
var results = ["E"];
shouldBe('regex443.exec(input0);', 'results');
var regex444 = /(a|b|c|d|e)f/i;
var input0 = "EF";
var results = ["EF", "E"];
shouldBe('regex444.exec(input0);', 'results');
var regex445 = /abcd*efg/i;
var input0 = "ABCDEFG";
var results = ["ABCDEFG"];
shouldBe('regex445.exec(input0);', 'results');
var regex446 = /ab*/i;
var input0 = "XABYABBBZ";
var results = ["AB"];
shouldBe('regex446.exec(input0);', 'results');
var input1 = "XAYABBBZ";
var results = ["A"];
shouldBe('regex446.exec(input1);', 'results');
var regex447 = /(ab|cd)e/i;
var input0 = "ABCDE";
var results = ["CDE", "CD"];
shouldBe('regex447.exec(input0);', 'results');
var regex448 = /[abhgefdc]ij/i;
var input0 = "HIJ";
var results = ["HIJ"];
shouldBe('regex448.exec(input0);', 'results');
var regex449 = /^(ab|cd)e/i;
var input0 = "ABCDE";
var results = null;
shouldBe('regex449.exec(input0);', 'results');
var regex450 = /(abc|)ef/i;
var input0 = "ABCDEF";
var results = ["EF", ""];
shouldBe('regex450.exec(input0);', 'results');
var regex451 = /(a|b)c*d/i;
var input0 = "ABCD";
var results = ["BCD", "B"];
shouldBe('regex451.exec(input0);', 'results');
var regex452 = /(ab|ab*)bc/i;
var input0 = "ABC";
var results = ["ABC", "A"];
shouldBe('regex452.exec(input0);', 'results');
var regex453 = /a([bc]*)c*/i;
var input0 = "ABC";
var results = ["ABC", "BC"];
shouldBe('regex453.exec(input0);', 'results');
var regex454 = /a([bc]*)(c*d)/i;
var input0 = "ABCD";
var results = ["ABCD", "BC", "D"];
shouldBe('regex454.exec(input0);', 'results');
var regex455 = /a([bc]+)(c*d)/i;
var input0 = "ABCD";
var results = ["ABCD", "BC", "D"];
shouldBe('regex455.exec(input0);', 'results');
var regex456 = /a([bc]*)(c+d)/i;
var input0 = "ABCD";
var results = ["ABCD", "B", "CD"];
shouldBe('regex456.exec(input0);', 'results');
var regex457 = /a[bcd]*dcdcde/i;
var input0 = "ADCDCDE";
var results = ["ADCDCDE"];
shouldBe('regex457.exec(input0);', 'results');
var regex458 = /(ab|a)b*c/i;
var input0 = "ABC";
var results = ["ABC", "AB"];
shouldBe('regex458.exec(input0);', 'results');
var regex459 = /((a)(b)c)(d)/i;
var input0 = "ABCD";
var results = ["ABCD", "ABC", "A", "B", "D"];
shouldBe('regex459.exec(input0);', 'results');
var regex460 = /[a-zA-Z_][a-zA-Z0-9_]*/i;
var input0 = "ALPHA";
var results = ["ALPHA"];
shouldBe('regex460.exec(input0);', 'results');
var regex461 = /^a(bc+|b[eh])g|.h$/i;
var input0 = "ABH";
var results = ["BH", undefined];
shouldBe('regex461.exec(input0);', 'results');
var regex462 = /(bc+d$|ef*g.|h?i(j|k))/i;
var input0 = "EFFGZ";
var results = ["EFFGZ", "EFFGZ", undefined];
shouldBe('regex462.exec(input0);', 'results');
var input1 = "IJ";
var results = ["IJ", "IJ", "J"];
shouldBe('regex462.exec(input1);', 'results');
var input2 = "REFFGZ";
var results = ["EFFGZ", "EFFGZ", undefined];
shouldBe('regex462.exec(input2);', 'results');
// Failers
var input3 = "ADCDCDE";
var results = null;
shouldBe('regex462.exec(input3);', 'results');
var input4 = "EFFG";
var results = null;
shouldBe('regex462.exec(input4);', 'results');
var input5 = "BCDD";
var results = null;
shouldBe('regex462.exec(input5);', 'results');
var regex463 = /((((((((((a))))))))))/i;
var input0 = "A";
var results = ["A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"];
shouldBe('regex463.exec(input0);', 'results');
var regex464 = /((((((((((a))))))))))\10/i;
var input0 = "AA";
var results = ["AA", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"];
shouldBe('regex464.exec(input0);', 'results');
var regex465 = /(((((((((a)))))))))/i;
var input0 = "A";
var results = ["A", "A", "A", "A", "A", "A", "A", "A", "A", "A"];
shouldBe('regex465.exec(input0);', 'results');
var regex466 = /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i;
var input0 = "A";
var results = ["A", "A"];
shouldBe('regex466.exec(input0);', 'results');
var regex467 = /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i;
var input0 = "C";
var results = ["C", "C"];
shouldBe('regex467.exec(input0);', 'results');
var regex468 = /multiple words of text/i;
// Failers
var input0 = "AA";
var results = null;
shouldBe('regex468.exec(input0);', 'results');
var input1 = "UH-UH";
var results = null;
shouldBe('regex468.exec(input1);', 'results');
var regex469 = /multiple words/i;
var input0 = "MULTIPLE WORDS, YEAH";
var results = ["MULTIPLE WORDS"];
shouldBe('regex469.exec(input0);', 'results');
var regex470 = /(.*)c(.*)/i;
var input0 = "ABCDE";
var results = ["ABCDE", "AB", "DE"];
shouldBe('regex470.exec(input0);', 'results');
var regex471 = /\((.*), (.*)\)/i;
var input0 = "(A, B)";
var results = ["(A, B)", "A", "B"];
shouldBe('regex471.exec(input0);', 'results');
var regex472 = /abcd/i;
var input0 = "ABCD";
var results = ["ABCD"];
shouldBe('regex472.exec(input0);', 'results');
var regex473 = /a(bc)d/i;
var input0 = "ABCD";
var results = ["ABCD", "BC"];
shouldBe('regex473.exec(input0);', 'results');
var regex474 = /a[-]?c/i;
var input0 = "AC";
var results = ["AC"];
shouldBe('regex474.exec(input0);', 'results');
var regex475 = /(abc)\1/i;
var input0 = "ABCABC";
var results = ["ABCABC", "ABC"];
shouldBe('regex475.exec(input0);', 'results');
var regex476 = /([a-c]*)\1/i;
var input0 = "ABCABC";
var results = ["ABCABC", "ABC"];
shouldBe('regex476.exec(input0);', 'results');
var regex477 = /a(?!b)./;
var input0 = "abad";
var results = ["ad"];
shouldBe('regex477.exec(input0);', 'results');
var regex478 = /a(?=d)./;
var input0 = "abad";
var results = ["ad"];
shouldBe('regex478.exec(input0);', 'results');
var regex479 = /a(?=c|d)./;
var input0 = "abad";
var results = ["ad"];
shouldBe('regex479.exec(input0);', 'results');
var regex480 = /a(?:b|c|d)(.)/;
var input0 = "ace";
var results = ["ace", "e"];
shouldBe('regex480.exec(input0);', 'results');
var regex481 = /a(?:b|c|d)*(.)/;
var input0 = "ace";
var results = ["ace", "e"];
shouldBe('regex481.exec(input0);', 'results');
var regex482 = /a(?:b|c|d)+?(.)/;
var input0 = "ace";
var results = ["ace", "e"];
shouldBe('regex482.exec(input0);', 'results');
var input1 = "acdbcdbe";
var results = ["acd", "d"];
shouldBe('regex482.exec(input1);', 'results');
var regex483 = /a(?:b|c|d)+(.)/;
var input0 = "acdbcdbe";
var results = ["acdbcdbe", "e"];
shouldBe('regex483.exec(input0);', 'results');
var regex484 = /a(?:b|c|d){2}(.)/;
var input0 = "acdbcdbe";
var results = ["acdb", "b"];
shouldBe('regex484.exec(input0);', 'results');
var regex485 = /a(?:b|c|d){4,5}(.)/;
var input0 = "acdbcdbe";
var results = ["acdbcdb", "b"];
shouldBe('regex485.exec(input0);', 'results');
var regex486 = /a(?:b|c|d){4,5}?(.)/;
var input0 = "acdbcdbe";
var results = ["acdbcd", "d"];
shouldBe('regex486.exec(input0);', 'results');
var regex487 = /((foo)|(bar))*/;
var input0 = "foobar";
var results = ["foobar", "bar", undefined, "bar"];
shouldBe('regex487.exec(input0);', 'results');
var regex488 = /a(?:b|c|d){6,7}(.)/;
var input0 = "acdbcdbe";
var results = ["acdbcdbe", "e"];
shouldBe('regex488.exec(input0);', 'results');
var regex489 = /a(?:b|c|d){6,7}?(.)/;
var input0 = "acdbcdbe";
var results = ["acdbcdbe", "e"];
shouldBe('regex489.exec(input0);', 'results');
var regex490 = /a(?:b|c|d){5,6}(.)/;
var input0 = "acdbcdbe";
var results = ["acdbcdbe", "e"];
shouldBe('regex490.exec(input0);', 'results');
var regex491 = /a(?:b|c|d){5,6}?(.)/;
var input0 = "acdbcdbe";
var results = ["acdbcdb", "b"];
shouldBe('regex491.exec(input0);', 'results');
var regex492 = /a(?:b|c|d){5,7}(.)/;
var input0 = "acdbcdbe";
var results = ["acdbcdbe", "e"];
shouldBe('regex492.exec(input0);', 'results');
var regex493 = /a(?:b|c|d){5,7}?(.)/;
var input0 = "acdbcdbe";
var results = ["acdbcdb", "b"];
shouldBe('regex493.exec(input0);', 'results');
var regex494 = /a(?:b|(c|e){1,2}?|d)+?(.)/;
var input0 = "ace";
var results = ["ace", "c", "e"];
shouldBe('regex494.exec(input0);', 'results');
var regex495 = /^(.+)?B/;
var input0 = "AB";
var results = ["AB", "A"];
shouldBe('regex495.exec(input0);', 'results');
var regex496 = /^([^a-z])|(\^)$/;
var input0 = ".";
var results = [".", ".", undefined];
shouldBe('regex496.exec(input0);', 'results');
var regex497 = /^[<>]&/;
var input0 = "<&OUT";
var results = ["<&"];
shouldBe('regex497.exec(input0);', 'results');
var regex498 = /^(a\1?){4}$/;
var input0 = "aaaaaaaaaa";
var results = null;
shouldBe('regex498.exec(input0);', 'results');
// Failers
var input1 = "AB";
var results = null;
shouldBe('regex498.exec(input1);', 'results');
var input2 = "aaaaaaaaa";
var results = null;
shouldBe('regex498.exec(input2);', 'results');
var input3 = "aaaaaaaaaaa";
var results = null;
shouldBe('regex498.exec(input3);', 'results');
var regex499 = /^(a(?:\1)){4}$/;
var input0 = "aaaa";
var results = ["aaaa", "a"];
shouldBe('regex499.exec(input0);', 'results');
// Failers
var input1 = "aaaaaaaaa";
var results = null;
shouldBe('regex499.exec(input1);', 'results');
var input2 = "aaaaaaaaaaa";
var results = null;
shouldBe('regex499.exec(input2);', 'results');
var input3 = "aaaaaaaaaa";
var results = null;
shouldBe('regex499.exec(input3);', 'results');
var regex500 = /(?:(f)(o)(o)|(b)(a)(r))*/;
var input0 = "foobar";
var results = ["foobar", undefined, undefined, undefined, "b", "a", "r"];
shouldBe('regex500.exec(input0);', 'results');
var regex503 = /(?:..)*a/;
var input0 = "aba";
var results = ["aba"];
shouldBe('regex503.exec(input0);', 'results');
var regex504 = /(?:..)*?a/;
var input0 = "aba";
var results = ["a"];
shouldBe('regex504.exec(input0);', 'results');
var regex505 = /^(?:b|a(?=(.)))*\1/;
var input0 = "abc";
var results = ["ab", undefined];
shouldBe('regex505.exec(input0);', 'results');
var regex506 = /^(){3,5}/;
var input0 = "abc";
var results = ["", ""];
shouldBe('regex506.exec(input0);', 'results');
var regex507 = /^(a+)*ax/;
var input0 = "aax";
var results = ["aax", "a"];
shouldBe('regex507.exec(input0);', 'results');
var regex508 = /^((a|b)+)*ax/;
var input0 = "aax";
var results = ["aax", "a", "a"];
shouldBe('regex508.exec(input0);', 'results');
var regex509 = /^((a|bc)+)*ax/;
var input0 = "aax";
var results = ["aax", "a", "a"];
shouldBe('regex509.exec(input0);', 'results');
var regex510 = /(a|x)*ab/;
var input0 = "cab";
var results = ["ab", undefined];
shouldBe('regex510.exec(input0);', 'results');
var regex511 = /(a)*ab/;
var input0 = "cab";
var results = ["ab", undefined];
shouldBe('regex511.exec(input0);', 'results');
var regex512 = /(?:a)b/;
var input0 = "ab";
var results = ["ab"];
shouldBe('regex512.exec(input0);', 'results');
var regex513 = /(a)b/;
var input0 = "ab";
var results = ["ab", "a"];
shouldBe('regex513.exec(input0);', 'results');
var regex514 = /(?:a)b/i;
var input0 = "Ab";
var results = ["Ab"];
shouldBe('regex514.exec(input0);', 'results');
var regex515 = /(a)b/i;
var input0 = "Ab";
var results = ["Ab", "A"];
shouldBe('regex515.exec(input0);', 'results');
var regex516 = /(?:[aA])b/;
// Failers
var input0 = "cb";
var results = null;
shouldBe('regex516.exec(input0);', 'results');
var input1 = "aB";
var results = null;
shouldBe('regex516.exec(input1);', 'results');
var regex517 = /(?:a)b/;
var input0 = "ab";
var results = ["ab"];
shouldBe('regex517.exec(input0);', 'results');
var regex518 = /((?:a))b/;
var input0 = "ab";
var results = ["ab", "a"];
shouldBe('regex518.exec(input0);', 'results');
var regex519 = /(?:a)b/i;
var input0 = "Ab";
var results = ["Ab"];
shouldBe('regex519.exec(input0);', 'results');
var regex520 = /((?:a))b/i;
var input0 = "Ab";
var results = ["Ab", "A"];
shouldBe('regex520.exec(input0);', 'results');
var regex521 = /(?:a)b/;
// Failers
var input0 = "aB";
var results = null;
shouldBe('regex521.exec(input0);', 'results');
var input1 = "aB";
var results = null;
shouldBe('regex521.exec(input1);', 'results');
var regex522 = /(?:a)b/i;
var input0 = "ab";
var results = ["ab"];
shouldBe('regex522.exec(input0);', 'results');
var regex523 = /(a)b/i;
var input0 = "ab";
var results = ["ab", "a"];
shouldBe('regex523.exec(input0);', 'results');
var regex524 = /(?:a)b/i;
var input0 = "aB";
var results = ["aB"];
shouldBe('regex524.exec(input0);', 'results');
var regex525 = /(a)b/i;
var input0 = "aB";
var results = ["aB", "a"];
shouldBe('regex525.exec(input0);', 'results');
var regex526 = /(?:a)[bB]/;
// Failers
var input0 = "aB";
var results = ["aB"];
shouldBe('regex526.exec(input0);', 'results');
var input1 = "Ab";
var results = null;
shouldBe('regex526.exec(input1);', 'results');
var regex527 = /(?:a)b/i;
var input0 = "aB";
var results = ["aB"];
shouldBe('regex527.exec(input0);', 'results');
var regex528 = /(a)b/i;
var input0 = "aB";
var results = ["aB", "a"];
shouldBe('regex528.exec(input0);', 'results');
var regex529 = /(?:a)[bB]/;
// Failers
var input0 = "Ab";
var results = null;
shouldBe('regex529.exec(input0);', 'results');
var input1 = "AB";
var results = null;
shouldBe('regex529.exec(input1);', 'results');
var regex530 = /(?:a)b/;
var input0 = "ab";
var results = ["ab"];
shouldBe('regex530.exec(input0);', 'results');
var regex531 = /((?:a))b/i;
var input0 = "ab";
var results = ["ab", "a"];
shouldBe('regex531.exec(input0);', 'results');
var regex532 = /(?:a)b/i;
var input0 = "aB";
var results = ["aB"];
shouldBe('regex532.exec(input0);', 'results');
var regex533 = /((?:a))b/i;
var input0 = "aB";
var results = ["aB", "a"];
shouldBe('regex533.exec(input0);', 'results');
var regex534 = /(?:a)[bB]/;
// Failers
var input0 = "AB";
var results = null;
shouldBe('regex534.exec(input0);', 'results');
var input1 = "Ab";
var results = null;
shouldBe('regex534.exec(input1);', 'results');
var regex535 = /(?:a)b/i;
var input0 = "aB";
var results = ["aB"];
shouldBe('regex535.exec(input0);', 'results');
var regex536 = /((?:a))b/i;
var input0 = "aB";
var results = ["aB", "a"];
shouldBe('regex536.exec(input0);', 'results');
var regex537 = /(?:a)[bB]/ ;
// Failers
var input0 = "Ab";
var results = null;
shouldBe('regex537.exec(input0);', 'results');
var input1 = "AB";
var results = null;
shouldBe('regex537.exec(input1);', 'results');
var regex538 = /((?:a.))b/i;
// Failers
var input0 = "AB";
var results = null;
shouldBe('regex538.exec(input0);', 'results');
var input1 = "a\nB";
var results = null;
shouldBe('regex538.exec(input1);', 'results');
var regex539 = /((?:a[\w\W]))b/i;
var input0 = "a\nB";
var results = ["a\x0aB", "a\x0a"];
shouldBe('regex539.exec(input0);', 'results');
var regex540 = /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/;
var input0 = "cabbbb";
var results = ["cabbbb"];
shouldBe('regex540.exec(input0);', 'results');
var regex541 = /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/;
var input0 = "caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
var results = ["caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"];
shouldBe('regex541.exec(input0);', 'results');
var regex542 = /(ab)\d\1/i;
var input0 = "Ab4ab";
var results = ["Ab4ab", "Ab"];
shouldBe('regex542.exec(input0);', 'results');
var input1 = "ab4Ab";
var results = ["ab4Ab", "ab"];
shouldBe('regex542.exec(input1);', 'results');
var regex543 = /foo\w*\d{4}baz/;
var input0 = "foobar1234baz";
var results = ["foobar1234baz"];
shouldBe('regex543.exec(input0);', 'results');
var regex544 = /x(~~)*(?:(?:F)?)?/;
var input0 = "x~~";
var results = ["x~~", "~~"];
shouldBe('regex544.exec(input0);', 'results');
var regex545 = /^a{3}c/;
var input0 = "aaac";
var results = ["aaac"];
shouldBe('regex545.exec(input0);', 'results');
var regex550 = /^(?:a?b?)*$/;
var input0 = "";
var results = [""];
shouldBe('regex550.exec(input0);', 'results');
var input1 = "a";
var results = ["a"];
shouldBe('regex550.exec(input1);', 'results');
var input2 = "ab";
var results = ["ab"];
shouldBe('regex550.exec(input2);', 'results');
var input3 = "aaa";
var results = ["aaa"];
shouldBe('regex550.exec(input3);', 'results');
// Failers
var input4 = "dbcb";
var results = null;
shouldBe('regex550.exec(input4);', 'results');
var input5 = "a--";
var results = null;
shouldBe('regex550.exec(input5);', 'results');
var input6 = "aa--";
var results = null;
shouldBe('regex550.exec(input6);', 'results');
var regex551 = /(^a([\w\W]))(^b$)/m;
var input0 = "a\nb\nc\n";
var results = ["a\x0ab", "a\x0a", "\x0a", "b"];
shouldBe('regex551.exec(input0);', 'results');
var regex552 = /(^b$)/m;
var input0 = "a\nb\nc\n";
var results = ["b", "b"];
shouldBe('regex552.exec(input0);', 'results');
var regex553 = /^b/m;
var input0 = "a\nb\n";
var results = ["b"];
shouldBe('regex553.exec(input0);', 'results');
var regex554 = /^(b)/m;
var input0 = "a\nb\n";
var results = ["b", "b"];
shouldBe('regex554.exec(input0);', 'results');
var regex555 = /(^b)/m;
var input0 = "a\nb\n";
var results = ["b", "b"];
shouldBe('regex555.exec(input0);', 'results');
var regex556 = /\n(^b)/m;
var input0 = "a\nb\n";
var results = ["\x0ab", "b"];
shouldBe('regex556.exec(input0);', 'results');
var regex557 = /([\w\W])c(?!.)/m;
var input0 = "a\nb\nc\n";
var results = ["\x0ac", "\x0a"];
shouldBe('regex557.exec(input0);', 'results');
var input1 = "a\nb\nc\n";
var results = ["\x0ac", "\x0a"];
shouldBe('regex557.exec(input1);', 'results');
var regex558 = /(b[\w\W])c(?!.)/m;
var input0 = "a\nb\nc\n";
var results = ["b\x0ac", "b\x0a"];
shouldBe('regex558.exec(input0);', 'results');
var input1 = "a\nb\nc\n";
var results = ["b\x0ac", "b\x0a"];
shouldBe('regex558.exec(input1);', 'results');
var regex559 = /()^b/;
// Failers
var input0 = "a\nb\nc\n";
var results = null;
shouldBe('regex559.exec(input0);', 'results');
var input1 = "a\nb\nc\n";
var results = null;
shouldBe('regex559.exec(input1);', 'results');
var regex560 = /(^b)/m;
var input0 = "a\nb\nc\n";
var results = ["b", "b"];
shouldBe('regex560.exec(input0);', 'results');
var regex561 = /(?:b|a)/;
var input0 = "a";
var results = ["a"];
shouldBe('regex561.exec(input0);', 'results');
var regex562 = /(x)?(?:a|b)/;
var input0 = "xa";
var results = ["xa", "x"];
shouldBe('regex562.exec(input0);', 'results');
var input1 = "a";
var results = ["a", undefined];
shouldBe('regex562.exec(input1);', 'results');
var regex563 = /(x)?(?:b|a)/;
var input0 = "a";
var results = ["a", undefined];
shouldBe('regex563.exec(input0);', 'results');
var regex564 = /()?(?:b|a)/;
var input0 = "a";
var results = ["a", undefined];
shouldBe('regex564.exec(input0);', 'results');
var regex565 = /()?(?:a|b)/;
var input0 = "a";
var results = ["a", undefined];
shouldBe('regex565.exec(input0);', 'results');
var regex566 = /^(\()?blah(?:(\))?)$/;
var input0 = "(blah)";
var results = ["(blah)", "(", ")"];
shouldBe('regex566.exec(input0);', 'results');
var input1 = "blah";
var results = ["blah", undefined, undefined];
shouldBe('regex566.exec(input1);', 'results');
var input2 = "blah)";
var results = ["blah)", undefined, ")"];
shouldBe('regex566.exec(input2);', 'results');
var input3 = "(blah";
var results = ["(blah", "(", undefined];
shouldBe('regex566.exec(input3);', 'results');
// Failers
var input4 = "a";
var results = null;
shouldBe('regex566.exec(input4);', 'results');
var regex567 = /^(\(+)?blah(?:(\))?)$/;
var input0 = "(blah)";
var results = ["(blah)", "(", ")"];
shouldBe('regex567.exec(input0);', 'results');
var input1 = "blah";
var results = ["blah", undefined, undefined];
shouldBe('regex567.exec(input1);', 'results');
var input2 = "blah)";
var results = ["blah)", undefined, ")"];
shouldBe('regex567.exec(input2);', 'results');
var input3 = "(blah";
var results = ["(blah", "(", undefined];
shouldBe('regex567.exec(input3);', 'results');
var regex568 = /((?!a)b|a)/;
var input0 = "a";
var results = ["a", "a"];
shouldBe('regex568.exec(input0);', 'results');
var regex569 = /((?=a)b|a)/;
var input0 = "a";
var results = ["a", "a"];
shouldBe('regex569.exec(input0);', 'results');
var input1 = "a";
var results = ["a", "a"];
shouldBe('regex569.exec(input1);', 'results');
var regex570 = /((?=a)a|b)/;
var input0 = "a";
var results = ["a", "a"];
shouldBe('regex570.exec(input0);', 'results');
var regex571 = /(?=(a+?))(\1ab)/;
var input0 = "aaab";
var results = ["aab", "a", "aab"];
shouldBe('regex571.exec(input0);', 'results');
var regex572 = /(\w+:)+/;
var input0 = "one:";
var results = ["one:", "one:"];
shouldBe('regex572.exec(input0);', 'results');
var regex574 = /(?=(a+?))(\1ab)/;
var input0 = "aaab";
var results = ["aab", "a", "aab"];
shouldBe('regex574.exec(input0);', 'results');
var regex575 = /^(?=(a+?))\1ab/;
// Failers
var input0 = "aaab";
var results = null;
shouldBe('regex575.exec(input0);', 'results');
var input1 = "aaab";
var results = null;
shouldBe('regex575.exec(input1);', 'results');
var regex576 = /([\w:]+::)?(\w+)$/;
var input0 = "abcd";
var results = ["abcd", undefined, "abcd"];
shouldBe('regex576.exec(input0);', 'results');
var input1 = "xy:z:::abcd";
var results = ["xy:z:::abcd", "xy:z:::", "abcd"];
shouldBe('regex576.exec(input1);', 'results');
var regex577 = /^[^bcd]*(c+)/;
var input0 = "aexycd";
var results = ["aexyc", "c"];
shouldBe('regex577.exec(input0);', 'results');
var regex578 = /(a*)b+/;
var input0 = "caab";
var results = ["aab", "aa"];
shouldBe('regex578.exec(input0);', 'results');
var regex579 = /([\w:]+::)?(\w+)$/;
var input0 = "abcd";
var results = ["abcd", undefined, "abcd"];
shouldBe('regex579.exec(input0);', 'results');
var input1 = "xy:z:::abcd";
var results = ["xy:z:::abcd", "xy:z:::", "abcd"];
shouldBe('regex579.exec(input1);', 'results');
// Failers
var input2 = "abcd:";
var results = null;
shouldBe('regex579.exec(input2);', 'results');
var input3 = "abcd:";
var results = null;
shouldBe('regex579.exec(input3);', 'results');
var regex580 = /^[^bcd]*(c+)/;
var input0 = "aexycd";
var results = ["aexyc", "c"];
shouldBe('regex580.exec(input0);', 'results');
var regex582 = /([[:]+)/;
var input0 = "a:[b]:";
var results = [":[", ":["];
shouldBe('regex582.exec(input0);', 'results');
var regex583 = /([[=]+)/;
var input0 = "a=[b]=";
var results = ["=[", "=["];
shouldBe('regex583.exec(input0);', 'results');
var regex584 = /([[.]+)/;
var input0 = "a.[b].";
var results = [".[", ".["];
shouldBe('regex584.exec(input0);', 'results');
var regex588 = /a$/;
var input0 = "aaab";
var results = null;
shouldBe('regex588.exec(input0);', 'results');
var input1 = "a\nb\n";
var results = null;
shouldBe('regex588.exec(input1);', 'results');
var regex589 = /b$/;
var input0 = "a\nb";
var results = ["b"];
shouldBe('regex589.exec(input0);', 'results');
// Failers
var input1 = "a\nb\n";
var results = null;
shouldBe('regex589.exec(input1);', 'results');
var regex590 = /b$/m;
var input0 = "a\nb";
var results = ["b"];
shouldBe('regex590.exec(input0);', 'results');
var input1 = "a\nb\n";
var results = ["b"];
shouldBe('regex590.exec(input1);', 'results');
var regex600 = /<a[\s]+href[\s]*=[\s]*([\"\'])?(?:(.*?)\1|([^\s]+))/i;
var input0 = "<a href=abcd xyz";
var results = ["<a href=", undefined, "", undefined];
shouldBe('regex600.exec(input0);', 'results');
var input1 = "<a href=\"abcd xyz pqr\" cats";
var results = ["<a href=\"abcd xyz pqr\"", "\"", "abcd xyz pqr", undefined];
shouldBe('regex600.exec(input1);', 'results');
var input2 = "<a href=\'abcd xyz pqr\' cats";
var results = ["<a href=\'abcd xyz pqr\'", "\'", "abcd xyz pqr", undefined];
shouldBe('regex600.exec(input2);', 'results');
var regex601 = /<a\s+href\s*=\s*(["'])?(?:(.*?)\1|(\S+))/i;
var input0 = "<a href=abcd xyz";
var results = ["<a href=", undefined, "", undefined];
shouldBe('regex601.exec(input0);', 'results');
var input1 = "<a href=\"abcd xyz pqr\" cats";
var results = ["<a href=\"abcd xyz pqr\"", "\"", "abcd xyz pqr", undefined];
shouldBe('regex601.exec(input1);', 'results');
var input2 = "<a href = \'abcd xyz pqr\' cats";
var results = ["<a href = \'abcd xyz pqr\'", "\'", "abcd xyz pqr", undefined];
shouldBe('regex601.exec(input2);', 'results');
var regex603 = /((Z)+|A)*/;
var input0 = "ZABCDEFG";
var results = ["ZA", "A", undefined];
shouldBe('regex603.exec(input0);', 'results');
var regex604 = /(Z()|A)*/;
var input0 = "ZABCDEFG";
var results = ["ZA", "A", undefined];
shouldBe('regex604.exec(input0);', 'results');
var regex605 = /(Z(())|A)*/;
var input0 = "ZABCDEFG";
var results = ["ZA", "A", undefined, undefined];
shouldBe('regex605.exec(input0);', 'results');
var regex608 = /^[a-\d]/;
var input0 = "abcde";
var results = ["a"];
shouldBe('regex608.exec(input0);', 'results');
var input1 = "-things";
var results = ["-"];
shouldBe('regex608.exec(input1);', 'results');
var input2 = "0digit";
var results = ["0"];
shouldBe('regex608.exec(input2);', 'results');
// Failers
var input3 = "bcdef";
var results = null;
shouldBe('regex608.exec(input3);', 'results');
var regex609 = /^[\d-a]/;
var input0 = "abcde";
var results = ["a"];
shouldBe('regex609.exec(input0);', 'results');
var input1 = "-things";
var results = ["-"];
shouldBe('regex609.exec(input1);', 'results');
var input2 = "0digit";
var results = ["0"];
shouldBe('regex609.exec(input2);', 'results');
// Failers
var input3 = "bcdef";
var results = null;
shouldBe('regex609.exec(input3);', 'results');
var regex610 = /[\s]+/;
var input0 = "> \x09\x0a\x0c\x0d\x0b<";
var results = [" \x09\x0a\x0c\x0d\x0b"];
shouldBe('regex610.exec(input0);', 'results');
var regex611 = /[ ]+/;
var input0 = "> \x09\x0a\x0c\x0d\x0b<";
var results = [" "];
shouldBe('regex611.exec(input0);', 'results');
var regex612 = /[\s]+/;
var input0 = "> \x09\x0a\x0b\x0c\x0d\x20\xA0\u2028\u2029\uFEFF<";
var results = [" \x09\x0a\x0b\x0c\x0d\x20\xA0\u2028\u2029\uFEFF"];
shouldBe('regex612.exec(input0);', 'results');
var regex613 = /\s+/;
var input0 = "> \x09\x0a\x0b\x0c\x0d\x20\xA0\u2028\u2029\uFEFF<";
var results = [" \x09\x0a\x0b\x0c\x0d\x20\xA0\u2028\u2029\uFEFF"];
shouldBe('regex613.exec(input0);', 'results');
var regex614 = /ab/;
var input0 = "ab";
var results = ["ab"];
shouldBe('regex614.exec(input0);', 'results');
var regex616 = /(?!^)x/m;
var input0 = "a\nxb\n";
var results = null;
shouldBe('regex616.exec(input0);', 'results');
var regex621 = /^abc/;
var input0 = "abc";
var results = ["abc"];
shouldBe('regex621.exec(input0);', 'results');
// Failers
var input1 = "xyzabc";
var results = null;
shouldBe('regex621.exec(input1);', 'results');
var regex622 = /a(?:bc)d/;
var input0 = "XabcdY";
var results = ["abcd"];
shouldBe('regex622.exec(input0);', 'results');
// Failers
var input1 = "Xa b c d Y";
var results = null;
shouldBe('regex622.exec(input1);', 'results');
var regex623 = /(xyz|abc)/;
var input0 = "XabcY";
var results = ["abc", "abc"];
shouldBe('regex623.exec(input0);', 'results');
var input1 = "AxyzB";
var results = ["xyz", "xyz"];
shouldBe('regex623.exec(input1);', 'results');
var regex624 = /ABC/i;
var input0 = "XabCY";
var results = ["abC"];
shouldBe('regex624.exec(input0);', 'results');
var regex625 = /([aA][bB]C|D)E/;
var input0 = "abCE";
var results = ["abCE", "abC"];
shouldBe('regex625.exec(input0);', 'results');
var input1 = "DE";
var results = ["DE", "D"];
shouldBe('regex625.exec(input1);', 'results');
// Failers
var input2 = "abcE";
var results = null;
shouldBe('regex625.exec(input2);', 'results');
var input3 = "abCe";
var results = null;
shouldBe('regex625.exec(input3);', 'results');
var input4 = "dE";
var results = null;
shouldBe('regex625.exec(input4);', 'results');
var input5 = "De";
var results = null;
shouldBe('regex625.exec(input5);', 'results');
var regex626 = /(.*)\d+\1/;
var input0 = "abc123abc";
var results = ["abc123abc", "abc"];
shouldBe('regex626.exec(input0);', 'results');
var input1 = "abc123bc";
var results = ["bc123bc", "bc"];
shouldBe('regex626.exec(input1);', 'results');
var regex627 = /(.*)\d+\1/;
var input0 = "abc123abc";
var results = ["abc123abc", "abc"];
shouldBe('regex627.exec(input0);', 'results');
var input1 = "abc123bc";
var results = ["bc123bc", "bc"];
shouldBe('regex627.exec(input1);', 'results');
var regex628 = /((.*))\d+\1/;
var input0 = "abc123abc";
var results = ["abc123abc", "abc", "abc"];
shouldBe('regex628.exec(input0);', 'results');
var input1 = "abc123bc";
var results = ["bc123bc", "bc", "bc"];
shouldBe('regex628.exec(input1);', 'results');
var regex630 = /[\z\C]/;
var input0 = "z";
var results = ["z"];
shouldBe('regex630.exec(input0);', 'results');
var input1 = "C";
var results = ["C"];
shouldBe('regex630.exec(input1);', 'results');
var regex631 = /\M/;
var input0 = "M";
var results = ["M"];
shouldBe('regex631.exec(input0);', 'results');
var regex632 = /(a+)*b/;
var input0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
var results = null;
shouldBe('regex632.exec(input0);', 'results');
var regex633 = /reg(?:ul(?:[a\xc3\xa4]|ae)r|ex)/i;
var input0 = "REGular";
var results = ["REGular"];
shouldBe('regex633.exec(input0);', 'results');
var input1 = "regulaer";
var results = ["regulaer"];
shouldBe('regex633.exec(input1);', 'results');
var input2 = "Regex";
var results = ["Regex"];
shouldBe('regex633.exec(input2);', 'results');
var input3 = "regul\xa4r";
var results = ["regul\xa4r"];
shouldBe('regex633.exec(input3);', 'results');
// Failers
var input4 = "regul\xc3\xa4r";
var results = null;
shouldBe('regex633.exec(input4);', 'results');
var regex634 = /\xc3\x85\xc3\xa6\xc3\xa5\xc3\xa4[\xc3\xa0-\xc3\xbf\xc3\x80-\xc3\x9f]+/;
var input0 = "\xc3\x85\xc3\xa6\xc3\xa5\xc3\xa4\xc3";
var results = ["\xc3\x85\xc3\xa6\xc3\xa5\xc3\xa4\xc3"];
shouldBe('regex634.exec(input0);', 'results');
var input1 = "\xc3\x85\xc3\xa6\xc3\xa5\xc3\xa4\xc3\xbf";
var results = ["\xc3\x85\xc3\xa6\xc3\xa5\xc3\xa4\xc3\xbf"];
shouldBe('regex634.exec(input1);', 'results');
var input2 = "\xc3\x85\xc3\xa6\xc3\xa5\xc3\xa4\xc3\x80";
var results = ["\xc3\x85\xc3\xa6\xc3\xa5\xc3\xa4\xc3\x80"];
shouldBe('regex634.exec(input2);', 'results');
var input3 = "\xc3\x85\xc3\xa6\xc3\xa5\xc3\xa4\xc3\x9f";
var results = ["\xc3\x85\xc3\xa6\xc3\xa5\xc3\xa4\xc3\x9f"];
shouldBe('regex634.exec(input3);', 'results');
var regex636 = /ab cd defg/;
var input0 = "ab cd defg";
var results = ["ab cd defg"];
shouldBe('regex636.exec(input0);', 'results');
var regex637 = /ab cddefg/;
var input0 = "ab cddefg";
var results = ["ab cddefg"];
shouldBe('regex637.exec(input0);', 'results');
// Failers
var input1 = "abcddefg";
var results = null;
shouldBe('regex637.exec(input1);', 'results');
var regex641 = /(?:(?:a|b)(X))+/;
var input0 = "bXaX";
var results = ["bXaX", "X"];
shouldBe('regex641.exec(input0);', 'results');
var regex642 = /(?:(?:\1a|b)(X|Y))+/;
var input0 = "bXXaYYaY";
var results = ["bX", "X"];
shouldBe('regex642.exec(input0);', 'results');
var input1 = "bXYaXXaX";
var results = ["bX", "X"];
shouldBe('regex642.exec(input1);', 'results');
var regex643 = /()()()()()()()()()(?:(\10a|b)(X|Y))+/;
var input0 = "bXXaYYaY";
var results = ["bX", "", "", "", "", "", "", "", "", "", "b", "X"];
shouldBe('regex643.exec(input0);', 'results');
var regex644 = /[[,abc,]+]/;
var input0 = "abc]";
var results = ["abc]"];
shouldBe('regex644.exec(input0);', 'results');
var input1 = "a,b]";
var results = ["a,b]"];
shouldBe('regex644.exec(input1);', 'results');
var input2 = "[a,b,c]";
var results = ["[a,b,c]"];
shouldBe('regex644.exec(input2);', 'results');
var regex645 = /a*b*\w/;
var input0 = "aaabbbb";
var results = ["aaabbbb"];
shouldBe('regex645.exec(input0);', 'results');
var input1 = "aaaa";
var results = ["aaaa"];
shouldBe('regex645.exec(input1);', 'results');
var input2 = "a";
var results = ["a"];
shouldBe('regex645.exec(input2);', 'results');
var regex646 = /a*b?\w/;
var input0 = "aaabbbb";
var results = ["aaabb"];
shouldBe('regex646.exec(input0);', 'results');
var input1 = "aaaa";
var results = ["aaaa"];
shouldBe('regex646.exec(input1);', 'results');
var input2 = "a";
var results = ["a"];
shouldBe('regex646.exec(input2);', 'results');
var regex647 = /a*b{0,4}\w/;
var input0 = "aaabbbb";
var results = ["aaabbbb"];
shouldBe('regex647.exec(input0);', 'results');
var input1 = "aaaa";
var results = ["aaaa"];
shouldBe('regex647.exec(input1);', 'results');
var input2 = "a";
var results = ["a"];
shouldBe('regex647.exec(input2);', 'results');
var regex648 = /a*b{0,}\w/;
var input0 = "aaabbbb";
var results = ["aaabbbb"];
shouldBe('regex648.exec(input0);', 'results');
var input1 = "aaaa";
var results = ["aaaa"];
shouldBe('regex648.exec(input1);', 'results');
var input2 = "a";
var results = ["a"];
shouldBe('regex648.exec(input2);', 'results');
var regex649 = /a*\d*\w/;
var input0 = "0a";
var results = ["0a"];
shouldBe('regex649.exec(input0);', 'results');
var input1 = "a";
var results = ["a"];
shouldBe('regex649.exec(input1);', 'results');
var regex650 = /^\w+=.*(\\\n.*)+/;
var input0 = "abc=xyz\\\npqr";
var results = ["abc=xyz\\\npqr", "\\\npqr"];
shouldBe('regex650.exec(input0);', 'results');
var regex651 = /(?=(\w+))\1:/;
var input0 = "abcd:";
var results = ["abcd:", "abcd"];
shouldBe('regex651.exec(input0);', 'results');
var regex652 = /^(?=(\w+))\1:/;
var input0 = "abcd:";
var results = ["abcd:", "abcd"];
shouldBe('regex652.exec(input0);', 'results');
var regex660 = /^(a()*)*/;
var input0 = "aaaa";
var results = ["aaaa", "a", undefined];
shouldBe('regex660.exec(input0);', 'results');
var regex661 = /^(?:a(?:(?:))*)*/;
var input0 = "aaaa";
var results = ["aaaa"];
shouldBe('regex661.exec(input0);', 'results');
var regex662 = /^(a()+)+/;
var input0 = "aaaa";
var results = ["aaaa", "a", ""];
shouldBe('regex662.exec(input0);', 'results');
var regex663 = /^(?:a(?:(?:))+)+/;
var input0 = "aaaa";
var results = ["aaaa"];
shouldBe('regex663.exec(input0);', 'results');
var regex664 = /(a){0,3}(?:b|(c|))*D/;
var input0 = "abbD";
var results = ["abbD", "a", undefined];
shouldBe('regex664.exec(input0);', 'results');
var input1 = "ccccD";
var results = ["ccccD", undefined, "c"];
shouldBe('regex664.exec(input1);', 'results');
var input2 = "D";
var results = ["D", undefined, undefined];
shouldBe('regex664.exec(input2);', 'results');
var regex665 = /(a|)*\d/;
var input0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
var results = null;
shouldBe('regex665.exec(input0);', 'results');
var input1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4";
var results = ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4", "a"];
shouldBe('regex665.exec(input1);', 'results');
var regex667 = /(?:a|)*\d/;
var input0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
var results = null;
shouldBe('regex667.exec(input0);', 'results');
var input1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4";
var results = ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4"];
shouldBe('regex667.exec(input1);', 'results');
var regex669 = /^(?![^\n]*\n$)/;
var input0 = "abc";
var results = [""];
shouldBe('regex669.exec(input0);', 'results');
var input1 = "abc\n";
var results = null;
shouldBe('regex669.exec(input1);', 'results');
var regex671 = /(.*(.)?)*/;
var input0 = "abcd";
var results = ["abcd", "abcd", undefined];
shouldBe('regex671.exec(input0);', 'results');
var regex672 = /[[:abcd:xyz]]/;
var input0 = "a]";
var results = ["a]"];
shouldBe('regex672.exec(input0);', 'results');
var input1 = ":]";
var results = [":]"];
shouldBe('regex672.exec(input1);', 'results');
var regex673 = /[abc[:x\]pqr]/;
var input0 = "a";
var results = ["a"];
shouldBe('regex673.exec(input0);', 'results');
var input1 = "[";
var results = ["["];
shouldBe('regex673.exec(input1);', 'results');
var input2 = ":";
var results = [":"];
shouldBe('regex673.exec(input2);', 'results');
var input3 = "]";
var results = ["]"];
shouldBe('regex673.exec(input3);', 'results');
var input4 = "p";
var results = ["p"];
shouldBe('regex673.exec(input4);', 'results');
var regex674 = /(a(b)*)*/;
var input0 = "aba";
var results = ["aba","a",undefined];
shouldBe('regex674.exec(input0);', 'results');
var regex675 = /(a*)*/;
var input0 = "ab";
var results = ["a","a"];
shouldBe('regex675.exec(input0);', 'results');
var regex676 = /([ab]*)*/;
var input0 = "abab";
var results = ["abab","abab"];
shouldBe('regex676.exec(input0);', 'results');
// Global matches.
var regexGlobal0 = RegExp("", "g");
var input0 = "abc";
var results = [ "", "", "", "" ];
shouldBe('input0.match(regexGlobal0);', 'results');
var regexGlobal1 = /a*/g;
var input0 = "abbab";
var results = [ "a", "", "", "a", "", "" ];
shouldBe('input0.match(regexGlobal1);', 'results');
var regexGlobal2 = /\babc./g;
var input0 = "abc:abc;xyzabc.";
var results = [ "abc:", "abc;" ];
shouldBe('input0.match(regexGlobal2);', 'results');
var regexGlobal3 = /abc./g;
var input0 = "abc:abc;xyzabc.";
var results = [ "abc:", "abc;", "abc." ];
shouldBe('input0.match(regexGlobal3);', 'results');
var regexGlobal4 = /$/g;
var input0 = "abc\n";
var results = [ "" ];
shouldBe('input0.match(regexGlobal4);', 'results');
var regexGlobal5 = /$/gm;
var input0 = "abc\n";
var results = [ "", "" ];
shouldBe('input0.match(regexGlobal5);', 'results');
var regexGlobal6 = /^/g;
var input0 = "a\nb\nc\n";
var results = [ "" ];
shouldBe('input0.match(regexGlobal6);', 'results');
var input1 = "\\";
var results = [ "" ];
shouldBe('input1.match(regexGlobal6);', 'results');
var regexGlobal7 = /^/gm;
var input0 = "a\nb\nc\n";
var results = [ "", "", "", "" ];
shouldBe('input0.match(regexGlobal7);', 'results');
var input1 = "\\";
var results = [ "" ];
shouldBe('input1.match(regexGlobal7);', 'results');
var regexGlobal8 = /^(?=C)/g;
// Failers
var input0 = "A\nC\nC\nE\n";
var results = null;
shouldBe('input0.match(regexGlobal8);', 'results');
var regexGlobal9 = /^(?=C)/gm;
var input0 = "A\nC\nC\nE\n";
var results = [ "", "" ];
shouldBe('input0.match(regexGlobal9);', 'results');
// DISABLED:
// These tests use (?<) or (?>) constructs. These are not currently valid in ECMAScript,
// but these tests may be useful if similar constructs are introduced in the future.
//var regex217 = /(?<!bar)foo/;
//var input0 = "foo";
//var results = ["foo"];
//shouldBe('regex217.exec(input0);', 'results');
//var input1 = "catfood";
//var results = ["foo"];
//shouldBe('regex217.exec(input1);', 'results');
//var input2 = "arfootle";
//var results = ["foo"];
//shouldBe('regex217.exec(input2);', 'results');
//var input3 = "rfoosh";
//var results = ["foo"];
//shouldBe('regex217.exec(input3);', 'results');
//// Failers
//var input4 = "barfoo";
//var results = null;
//shouldBe('regex217.exec(input4);', 'results');
//var input5 = "towbarfoo";
//var results = null;
//shouldBe('regex217.exec(input5);', 'results');
//
//var regex218 = /\w{3}(?<!bar)foo/;
//var input0 = "catfood";
//var results = ["catfoo"];
//shouldBe('regex218.exec(input0);', 'results');
//// Failers
//var input1 = "foo";
//var results = null;
//shouldBe('regex218.exec(input1);', 'results');
//var input2 = "barfoo";
//var results = null;
//shouldBe('regex218.exec(input2);', 'results');
//var input3 = "towbarfoo";
//var results = null;
//shouldBe('regex218.exec(input3);', 'results');
//
//var regex219 = /(?<=(foo)a)bar/;
//var input0 = "fooabar";
//var results = ["bar", "foo"];
//shouldBe('regex219.exec(input0);', 'results');
//// Failers
//var input1 = "bar";
//var results = null;
//shouldBe('regex219.exec(input1);', 'results');
//var input2 = "foobbar";
//var results = null;
//shouldBe('regex219.exec(input2);', 'results');
//
//var regex221 = /(?>.*\/)foo/;
//var input0 = "/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/";
//var results = null;
//shouldBe('regex221.exec(input0);', 'results');
//
//var regex222 = /(?>.*\/)foo/;
//var input0 = "/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo";
//var results = ["/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo"];
//shouldBe('regex222.exec(input0);', 'results');
//
//var regex223 = /(?>(\.\d\d[1-9]?))\d+/;
//var input0 = "1.230003938";
//var results = [".230003938", ".23"];
//shouldBe('regex223.exec(input0);', 'results');
//var input1 = "1.875000282";
//var results = [".875000282", ".875"];
//shouldBe('regex223.exec(input1);', 'results');
//// Failers
//var input2 = "1.235";
//var results = null;
//shouldBe('regex223.exec(input2);', 'results');
//
//var regex224 = /^((?>\w+)|(?>\s+))*$/;
//var input0 = "now is the time for all good men to come to the aid of the party";
//var results = ["now is the time for all good men to come to the aid of the party", "party"];
//shouldBe('regex224.exec(input0);', 'results');
//// Failers
//var input1 = "this is not a line with only words and spaces!";
//var results = null;
//shouldBe('regex224.exec(input1);', 'results');
//
//var regex226 = /((?>\d+))(\w)/;
//var input0 = "12345a";
//var results = ["12345a", "12345", "a"];
//shouldBe('regex226.exec(input0);', 'results');
//// Failers
//var input1 = "12345+";
//var results = null;
//shouldBe('regex226.exec(input1);', 'results');
//
//var regex227 = /(?>a+)b/;
//var input0 = "aaab";
//var results = ["aaab"];
//shouldBe('regex227.exec(input0);', 'results');
//
//var regex228 = /((?>a+)b)/;
//var input0 = "aaab";
//var results = ["aaab", "aaab"];
//shouldBe('regex228.exec(input0);', 'results');
//
//var regex229 = /(?>(a+))b/;
//var input0 = "aaab";
//var results = ["aaab", "aaa"];
//shouldBe('regex229.exec(input0);', 'results');
//
//var regex230 = /(?>b)+/;
//var input0 = "aaabbbccc";
//var results = ["bbb"];
//shouldBe('regex230.exec(input0);', 'results');
//
//var regex231 = /(?>a+|b+|c+)*c/;
//var input0 = "aaabbbbccccd";
//var results = ["aaabbbbc"];
//shouldBe('regex231.exec(input0);', 'results');
//
//var regex232 = /((?>[^()]+)|\([^()]*\))+/;
//var input0 = "((abc(ade)ufh()()x";
//var results = ["abc(ade)ufh()()x", "x"];
//shouldBe('regex232.exec(input0);', 'results');
//
//var regex233 = /\(((?>[^()]+)|\([^()]+\))+\)/ ;
//var input0 = "(abc)";
//var results = ["(abc)", "abc"];
//shouldBe('regex233.exec(input0);', 'results');
//var input1 = "(abc(def)xyz)";
//var results = ["(abc(def)xyz)", "xyz"];
//shouldBe('regex233.exec(input1);', 'results');
//// Failers
//var input2 = "((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
//var results = null;
//shouldBe('regex233.exec(input2);', 'results');
//
//var regex245 = /(?<=ab)(\w\w)c/;
//var input0 = "abxxc";
//var results = ["xxc", "xx"];
//shouldBe('regex245.exec(input0);', 'results');
//var input1 = "aBxxc";
//var results = ["xxc", "xx"];
//shouldBe('regex245.exec(input1);', 'results');
//// Failers
//var input2 = "Abxxc";
//var results = null;
//shouldBe('regex245.exec(input2);', 'results');
//var input3 = "ABxxc";
//var results = null;
//shouldBe('regex245.exec(input3);', 'results');
//var input4 = "abxxC";
//var results = null;
//shouldBe('regex245.exec(input4);', 'results');
//
//var regex250 = /(?(?<=foo)bar|cat)/;
//var input0 = "foobar";
//var results = ["bar"];
//shouldBe('regex250.exec(input0);', 'results');
//var input1 = "cat";
//var results = ["cat"];
//shouldBe('regex250.exec(input1);', 'results');
//var input2 = "fcat";
//var results = ["cat"];
//shouldBe('regex250.exec(input2);', 'results');
//var input3 = "focat";
//var results = ["cat"];
//shouldBe('regex250.exec(input3);', 'results');
//// Failers
//var input4 = "foocat";
//var results = null;
//shouldBe('regex250.exec(input4);', 'results');
//
//var regex251 = /(?(?<!foo)cat|bar)/;
//var input0 = "foobar";
//var results = ["bar"];
//shouldBe('regex251.exec(input0);', 'results');
//var input1 = "cat";
//var results = ["cat"];
//shouldBe('regex251.exec(input1);', 'results');
//var input2 = "fcat";
//var results = ["cat"];
//shouldBe('regex251.exec(input2);', 'results');
//var input3 = "focat";
//var results = ["cat"];
//shouldBe('regex251.exec(input3);', 'results');
//// Failers
//var input4 = "foocat";
//var results = null;
//shouldBe('regex251.exec(input4);', 'results');
//
//var regex256 = /(?>a*)*/;
//var input0 = "a";
//var results = ["a"];
//shouldBe('regex256.exec(input0);', 'results');
//var input1 = "aa";
//var results = ["aa"];
//shouldBe('regex256.exec(input1);', 'results');
//var input2 = "aaaa";
//var results = ["aaaa"];
//shouldBe('regex256.exec(input2);', 'results');
//
//var regex266 = /(?>a*)*/;
//var input0 = "a";
//var results = ["a"];
//shouldBe('regex266.exec(input0);', 'results');
//var input1 = "aaabcde";
//var results = ["aaa"];
//shouldBe('regex266.exec(input1);', 'results');
//
//var regex267 = /((?>a*))*/;
//var input0 = "aaaaa";
//var results = ["aaaaa", ""];
//shouldBe('regex267.exec(input0);', 'results');
//var input1 = "aabbaa";
//var results = ["aa", ""];
//shouldBe('regex267.exec(input1);', 'results');
//
//var regex268 = /((?>a*?))*/;
//var input0 = "aaaaa";
//var results = ["", ""];
//shouldBe('regex268.exec(input0);', 'results');
//var input1 = "aabbaa";
//var results = ["", ""];
//shouldBe('regex268.exec(input1);', 'results');
//
//var regex270 = /(?<=(foo))bar\1/;
//var input0 = "foobarfoo";
//var results = ["barfoo", "foo"];
//shouldBe('regex270.exec(input0);', 'results');
//var input1 = "foobarfootling";
//var results = ["barfoo", "foo"];
//shouldBe('regex270.exec(input1);', 'results');
//// Failers
//var input2 = "foobar";
//var results = null;
//shouldBe('regex270.exec(input2);', 'results');
//var input3 = "barfoo";
//var results = null;
//shouldBe('regex270.exec(input3);', 'results');
//
//var regex275 = /(?<=foo\n)^bar/m;
//var input0 = "foo\nbar";
//var results = ["bar"];
//shouldBe('regex275.exec(input0);', 'results');
//// Failers
//var input1 = "bar";
//var results = null;
//shouldBe('regex275.exec(input1);', 'results');
//var input2 = "baz\nbar";
//var results = null;
//shouldBe('regex275.exec(input2);', 'results');
//
//var regex276 = /(?<=(?<!foo)bar)baz/;
//var input0 = "barbaz";
//var results = ["baz"];
//shouldBe('regex276.exec(input0);', 'results');
//var input1 = "barbarbaz";
//var results = ["baz"];
//shouldBe('regex276.exec(input1);', 'results');
//var input2 = "koobarbaz";
//var results = ["baz"];
//shouldBe('regex276.exec(input2);', 'results');
//// Failers
//var input3 = "baz";
//var results = null;
//shouldBe('regex276.exec(input3);', 'results');
//var input4 = "foobarbaz";
//var results = null;
//shouldBe('regex276.exec(input4);', 'results');
//
//var regex501 = /(?<=a)b/;
//var input0 = "ab";
//var results = ["b"];
//shouldBe('regex501.exec(input0);', 'results');
//// Failers
//var input1 = "cb";
//var results = null;
//shouldBe('regex501.exec(input1);', 'results');
//var input2 = "b";
//var results = null;
//shouldBe('regex501.exec(input2);', 'results');
//
//var regex502 = /(?<!c)b/;
//var input0 = "ab";
//var results = ["b"];
//shouldBe('regex502.exec(input0);', 'results');
//var input1 = "b";
//var results = ["b"];
//shouldBe('regex502.exec(input1);', 'results');
//var input2 = "b";
//var results = ["b"];
//shouldBe('regex502.exec(input2);', 'results');
//
//var regex546 = /(?<![cd])b/;
//// Failers
//var input0 = "B\nB";
//var results = null;
//shouldBe('regex546.exec(input0);', 'results');
//var input1 = "dbcb";
//var results = null;
//shouldBe('regex546.exec(input1);', 'results');
//
//var regex547 = /(?<![cd])[ab]/;
//var input0 = "dbaacb";
//var results = ["a"];
//shouldBe('regex547.exec(input0);', 'results');
//
//var regex548 = /(?<!(c|d))[ab]/;
//var input0 = "dbaacb";
//var results = ["a"];
//shouldBe('regex548.exec(input0);', 'results');
//
//var regex549 = /(?<!cd)[ab]/;
//var input0 = "cdaccb";
//var results = ["b"];
//shouldBe('regex549.exec(input0);', 'results');
//
//var regex573 = /$(?<=^(a))/;
//var input0 = "a";
//var results = ["", "a"];
//shouldBe('regex573.exec(input0);', 'results');
//
//var regex581 = /(?>a+)b/;
//var input0 = "aaab";
//var results = ["aaab"];
//shouldBe('regex581.exec(input0);', 'results');
//
//var regex585 = /((?>a+)b)/;
//var input0 = "aaab";
//var results = ["aaab", "aaab"];
//shouldBe('regex585.exec(input0);', 'results');
//
//var regex586 = /(?>(a+))b/;
//var input0 = "aaab";
//var results = ["aaab", "aaa"];
//shouldBe('regex586.exec(input0);', 'results');
//
//var regex587 = /((?>[^()]+)|\([^()]*\))+/;
//var input0 = "((abc(ade)ufh()()x";
//var results = ["abc(ade)ufh()()x", "x"];
//shouldBe('regex587.exec(input0);', 'results');
//
//var regex592 = /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/;
//var input0 = "a";
//var results = ["a", ""];
//shouldBe('regex592.exec(input0);', 'results');
//var input1 = "abc";
//var results = ["abc", ""];
//shouldBe('regex592.exec(input1);', 'results');
//var input2 = "a-b";
//var results = ["a-b", ""];
//shouldBe('regex592.exec(input2);', 'results');
//var input3 = "0-9";
//var results = ["0-9", ""];
//shouldBe('regex592.exec(input3);', 'results');
//var input4 = "a.b";
//var results = ["a.b", ""];
//shouldBe('regex592.exec(input4);', 'results');
//var input5 = "5.6.7";
//var results = ["5.6.7", ""];
//shouldBe('regex592.exec(input5);', 'results');
//var input6 = "the.quick.brown.fox";
//var results = ["the.quick.brown.fox", ""];
//shouldBe('regex592.exec(input6);', 'results');
//var input7 = "a100.b200.300c";
//var results = ["a100.b200.300c", ""];
//shouldBe('regex592.exec(input7);', 'results');
//var input8 = "12-ab.1245";
//var results = ["12-ab.1245", ""];
//shouldBe('regex592.exec(input8);', 'results');
//// Failers
//var input9 = "\";
//var results = null;
//shouldBe('regex592.exec(input9);', 'results');
//var input10 = ".a";
//var results = null;
//shouldBe('regex592.exec(input10);', 'results');
//var input11 = "-a";
//var results = null;
//shouldBe('regex592.exec(input11);', 'results');
//var input12 = "a-";
//var results = null;
//shouldBe('regex592.exec(input12);', 'results');
//var input13 = "a.";
//var results = null;
//shouldBe('regex592.exec(input13);', 'results');
//var input14 = "a_b";
//var results = null;
//shouldBe('regex592.exec(input14);', 'results');
//var input15 = "a.-";
//var results = null;
//shouldBe('regex592.exec(input15);', 'results');
//var input16 = "a..";
//var results = null;
//shouldBe('regex592.exec(input16);', 'results');
//var input17 = "ab..bc";
//var results = null;
//shouldBe('regex592.exec(input17);', 'results');
//var input18 = "the.quick.brown.fox-";
//var results = null;
//shouldBe('regex592.exec(input18);', 'results');
//var input19 = "the.quick.brown.fox.";
//var results = null;
//shouldBe('regex592.exec(input19);', 'results');
//var input20 = "the.quick.brown.fox_";
//var results = null;
//shouldBe('regex592.exec(input20);', 'results');
//var input21 = "the.quick.brown.fox+";
//var results = null;
//shouldBe('regex592.exec(input21);', 'results');
//
//var regex593 = /(?>.*)(?<=(abcd|wxyz))/;
//var input0 = "alphabetabcd";
//var results = ["alphabetabcd", "abcd"];
//shouldBe('regex593.exec(input0);', 'results');
//var input1 = "endingwxyz";
//var results = ["endingwxyz", "wxyz"];
//shouldBe('regex593.exec(input1);', 'results');
//// Failers
//var input2 = "a rather long string that doesn't end with one of them";
//var results = null;
//shouldBe('regex593.exec(input2);', 'results');
//
//var regex594 = /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/;
//var input0 = "word cat dog elephant mussel cow horse canary baboon snake shark otherword";
//var results = ["word cat dog elephant mussel cow horse canary baboon snake shark otherword"];
//shouldBe('regex594.exec(input0);', 'results');
//var input1 = "word cat dog elephant mussel cow horse canary baboon snake shark";
//var results = null;
//shouldBe('regex594.exec(input1);', 'results');
//
//var regex595 = /word (?>[a-zA-Z0-9]+ ){0,30}otherword/;
//var input0 = "word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope";
//var results = null;
//shouldBe('regex595.exec(input0);', 'results');
//
//var regex596 = /(?<=\d{3}(?!999))foo/;
//var input0 = "999foo";
//var results = ["foo"];
//shouldBe('regex596.exec(input0);', 'results');
//var input1 = "123999foo";
//var results = ["foo"];
//shouldBe('regex596.exec(input1);', 'results');
//// Failers
//var input2 = "123abcfoo";
//var results = null;
//shouldBe('regex596.exec(input2);', 'results');
//
//var regex597 = /(?<=(?!...999)\d{3})foo/;
//var input0 = "999foo";
//var results = ["foo"];
//shouldBe('regex597.exec(input0);', 'results');
//var input1 = "123999foo";
//var results = ["foo"];
//shouldBe('regex597.exec(input1);', 'results');
//// Failers
//var input2 = "123abcfoo";
//var results = null;
//shouldBe('regex597.exec(input2);', 'results');
//
//var regex598 = /(?<=\d{3}(?!999)...)foo/;
//var input0 = "123abcfoo";
//var results = ["foo"];
//shouldBe('regex598.exec(input0);', 'results');
//var input1 = "123456foo";
//var results = ["foo"];
//shouldBe('regex598.exec(input1);', 'results');
//// Failers
//var input2 = "123999foo";
//var results = null;
//shouldBe('regex598.exec(input2);', 'results');
//
//var regex599 = /(?<=\d{3}...)(?<!999)foo/;
//var input0 = "123abcfoo";
//var results = ["foo"];
//shouldBe('regex599.exec(input0);', 'results');
//var input1 = "123456foo";
//var results = ["foo"];
//shouldBe('regex599.exec(input1);', 'results');
//// Failers
//var input2 = "123999foo";
//var results = null;
//shouldBe('regex599.exec(input2);', 'results');
//
//var regex602 = /<a\s+href(?>\s*)=(?>\s*)(["'])?(?(1) (.*?)\1 | (\S+))/i;
//var input0 = "<a href=abcd xyz";
//var results = ["<a href=abcd", undefined, undefined, "abcd"];
//shouldBe('regex602.exec(input0);', 'results');
//var input1 = "<a href=\"abcd xyz pqr\" cats";
//var results = ["<a href=\"abcd xyz pqr\"", "\"", "abcd xyz pqr"];
//shouldBe('regex602.exec(input1);', 'results');
//var input2 = "<a href = \'abcd xyz pqr\' cats";
//var results = ["<a href = \'abcd xyz pqr\'", "\'", "abcd xyz pqr"];
//shouldBe('regex602.exec(input2);', 'results');
//
//var regex606 = /((?>Z)+|A)*/;
//var input0 = "ZABCDEFG";
//var results = ["ZA", "A"];
//shouldBe('regex606.exec(input0);', 'results');
//
//var regex607 = /((?>)+|A)*/;
//var input0 = "ZABCDEFG";
//var results = ["", ""];
//shouldBe('regex607.exec(input0);', 'results');
//
//var regex635 = /(?<=Z)X./;
//var input0 = "\x84XAZXB";
//var results = ["XB"];
//shouldBe('regex635.exec(input0);', 'results');
//
//var regex638 = /(?<![^f]oo)(bar)/;
//var input0 = "foobarX";
//var results = ["bar", "bar"];
//shouldBe('regex638.exec(input0);', 'results');
//// Failers
//var input1 = "boobarX";
//var results = null;
//shouldBe('regex638.exec(input1);', 'results');
//
//var regex639 = /(?<![^f])X/;
//var input0 = "offX";
//var results = ["X"];
//shouldBe('regex639.exec(input0);', 'results');
//// Failers
//var input1 = "onyX";
//var results = null;
//shouldBe('regex639.exec(input1);', 'results');
//
//var regex640 = /(?<=[^f])X/;
//var input0 = "onyX";
//var results = ["X"];
//shouldBe('regex640.exec(input0);', 'results');
//// Failers
//var input1 = "offX";
//var results = null;
//shouldBe('regex640.exec(input1);', 'results');
//
//var regex666 = /(?>a|)*\d/;
//var input0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
//var results = null;
//shouldBe('regex666.exec(input0);', 'results');
//var input1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4";
//var results = ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4"];
//shouldBe('regex666.exec(input1);', 'results');
//
//var regex668 = /^(?>.*)(?<!\n)/;
//var input0 = "abc";
//var results = ["abc"];
//shouldBe('regex668.exec(input0);', 'results');
//var input1 = "abc\n";
//var results = null;
//shouldBe('regex668.exec(input1);', 'results');
//
//var regex670 = /\z(?<!\n)/;
//var input0 = "abc";
//var results = [""];
//shouldBe('regex670.exec(input0);', 'results');
//var input1 = "abc\n";
//var results = null;
//shouldBe('regex670.exec(input1);', 'results');
// DISABLED:
// These tests use \Q and \E tokens. These are not currently valid in ECMAScript,
// but these tests may be useful if similar constructs are introduced in the future.
//var regex617 = /abc\Qabc\Eabc/;
//var input0 = "abcabcabc";
//var results = ["abcabcabc"];
//shouldBe('regex617.exec(input0);', 'results');
//
//var regex618 = /abc\Q(*+|\Eabc/;
//var input0 = "abc(*+|abc";
//var results = ["abc(*+|abc"];
//shouldBe('regex618.exec(input0);', 'results');
//
//var regex619 = /\Qabc\$xyz\E/;
//var input0 = "abc\\\$xyz";
//var results = ["abc\\$xyz"];
//shouldBe('regex619.exec(input0);', 'results');
//
//var regex620 = /\Qabc\E\$\Qxyz\E/;
//var input0 = "abc\$xyz";
//var results = ["abc$xyz"];
//shouldBe('regex620.exec(input0);', 'results');
//
//var regex629 = /[z\Qa-d]\E]/;
//var input0 = "z";
//var results = ["z"];
//shouldBe('regex629.exec(input0);', 'results');
//var input1 = "a";
//var results = ["a"];
//shouldBe('regex629.exec(input1);', 'results');
//var input2 = "-";
//var results = ["-"];
//shouldBe('regex629.exec(input2);', 'results');
//var input3 = "d";
//var results = ["d"];
//shouldBe('regex629.exec(input3);', 'results');
//var input4 = "]";
//var results = ["]"];
//shouldBe('regex629.exec(input4);', 'results');
//// Failers
//var input5 = "b";
//var results = null;
//shouldBe('regex629.exec(input5);', 'results');
//
//var regex653 = /^\Eabc/;
//var input0 = "abc";
//var results = ["abc"];
//shouldBe('regex653.exec(input0);', 'results');
//
//var regex654 = /^[\Eabc]/;
//var input0 = "a";
//var results = ["a"];
//shouldBe('regex654.exec(input0);', 'results');
//// Failers
//var input1 = "E";
//var results = null;
//shouldBe('regex654.exec(input1);', 'results');
//
//var regex655 = /^[a-\Ec]/;
//var input0 = "b";
//var results = ["b"];
//shouldBe('regex655.exec(input0);', 'results');
//// Failers
//var input1 = "-";
//var results = null;
//shouldBe('regex655.exec(input1);', 'results');
//var input2 = "E";
//var results = null;
//shouldBe('regex655.exec(input2);', 'results');
//
//var regex656 = /^[a\E\E-\Ec]/;
//var input0 = "b";
//var results = ["b"];
//shouldBe('regex656.exec(input0);', 'results');
//// Failers
//var input1 = "-";
//var results = null;
//shouldBe('regex656.exec(input1);', 'results');
//var input2 = "E";
//var results = null;
//shouldBe('regex656.exec(input2);', 'results');
//
//var regex657 = /^[\E\Qa\E-\Qz\E]+/;
//var input0 = "b";
//var results = ["b"];
//shouldBe('regex657.exec(input0);', 'results');
//// Failers
//var input1 = "-";
//var results = null;
//shouldBe('regex657.exec(input1);', 'results');
//
//var regex658 = /^[a\Q]bc\E]/;
//var input0 = "a";
//var results = ["a"];
//shouldBe('regex658.exec(input0);', 'results');
//var input1 = "]";
//var results = ["]"];
//shouldBe('regex658.exec(input1);', 'results');
//var input2 = "c";
//var results = ["c"];
//shouldBe('regex658.exec(input2);', 'results');
//
//var regex659 = /^[a-\Q\E]/;
//var input0 = "a";
//var results = ["a"];
//shouldBe('regex659.exec(input0);', 'results');
//var input1 = "-";
//var results = ["-"];
//shouldBe('regex659.exec(input1);', 'results');
// DISABLED:
// These tests use \A and \z tokens. These are not currently valid in ECMAScript,
// but these tests may be useful if similar constructs are introduced in the future.
//var regex591 = /b\z/;
//var input0 = "a\nb";
//var results = ["b"];
//shouldBe('regex591.exec(input0);', 'results');
//
//var regex615 = /(?!\A)x/m;
//var input0 = "a\nxb\n";
//var results = ["x"];
//shouldBe('regex615.exec(input0);', 'results');