11510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Copyright 2013 the V8 project authors. All rights reserved. 21510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 31510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// 41510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Redistribution and use in source and binary forms, with or without 51510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// modification, are permitted provided that the following conditions 61510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// are met: 71510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// 1. Redistributions of source code must retain the above copyright 81510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// notice, this list of conditions and the following disclaimer. 91510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// 2. Redistributions in binary form must reproduce the above copyright 101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// notice, this list of conditions and the following disclaimer in the 111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// documentation and/or other materials provided with the distribution. 121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// 131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY 141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY 171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgdescription( 251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org'Test regular expression processing with alternatives that match consuming no characters' 261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org); 271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar emptyStr = ""; 291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar s1 = "xxxx"; 301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar s2 = "aaaa"; 311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar s3 = "aax"; 321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar s4 = "abab"; 331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar s5 = "ab"; 341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar s6 = "xabx"; 351510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar s7 = "g0"; 361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty first alternative greedy '*' 381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re1 = new RegExp(/(?:|a|z)*/); 391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re1)', '[""]'); 401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re1)', '[""]'); 411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re1)', '["aaaa"]'); 421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re1)', '["aa"]'); 431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 441510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty middle alternative greedy '*' 451510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re2 = new RegExp(/(?:a||z)*/); 461510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re2)', '[""]'); 471510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re2)', '[""]'); 481510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re2)', '["aaaa"]'); 491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re2)', '["aa"]'); 501510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 511510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty last alternative greedy '*' 521510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re3 = new RegExp(/(?:a|z|)*/); 531510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re3)', '[""]'); 541510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re3)', '[""]'); 551510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re3)', '["aaaa"]'); 561510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re3)', '["aa"]'); 571510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 581510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty first alternative greedy '*' 591510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re4 = new RegExp(/(|a|z)*/); 601510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re4)', '["", undefined]'); 611510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re4)', '["", undefined]'); 621510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re4)', '["aaaa", "a"]'); 631510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re4)', '["aa", "a"]'); 641510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 651510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty middle alternative greedy '*' 661510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re5 = new RegExp(/(a||z)*/); 671510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re5)', '["", undefined]'); 681510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re5)', '["", undefined]'); 691510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re5)', '["aaaa", "a"]'); 701510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re5)', '["aa", "a"]'); 711510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 721510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty last alternative greedy '*' 731510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re6 = new RegExp(/(a|z|)*/); 741510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re6)', '["", undefined]'); 751510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re6)', '["", undefined]'); 761510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re6)', '["aaaa", "a"]'); 771510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re6)', '["aa", "a"]'); 781510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 791510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty first alternative fixed-count 801510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re7 = new RegExp(/(?:|a|z){2,5}/); 811510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re7)', '[""]'); 821510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re7)', '[""]'); 831510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re7)', '["aaa"]'); 841510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re7)', '["aa"]'); 851510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 861510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty middle alternative fixed-count 871510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re8 = new RegExp(/(?:a||z){2,5}/); 881510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re8)', '[""]'); 891510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re8)', '[""]'); 901510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re8)', '["aaaa"]'); 911510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re8)', '["aa"]'); 921510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 931510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty last alternative fixed-count 941510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re9 = new RegExp(/(?:a|z|){2,5}/); 951510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re9)', '[""]'); 961510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re9)', '[""]'); 971510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re9)', '["aaaa"]'); 981510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re9)', '["aa"]'); 991510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1001510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty first alternative non-greedy '*' 1011510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re10 = new RegExp(/(?:|a|z)*?/); 1021510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re10)', '[""]'); 1031510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re10)', '[""]'); 1041510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re10)', '[""]'); 1051510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re10)', '[""]'); 1061510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1071510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty middle alternative non-greedy '*' 1081510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re11 = new RegExp(/(?:a||z)*?/); 1091510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re11)', '[""]'); 1101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re11)', '[""]'); 1111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re11)', '[""]'); 1121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re11)', '[""]'); 1131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty last alternative non-greedy '*' 1151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re12 = new RegExp(/(?:a|z|)*?/); 1161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re12)', '[""]'); 1171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re12)', '[""]'); 1181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re12)', '[""]'); 1191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re12)', '[""]'); 1201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty first alternative non-greedy '*' 1221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re13 = new RegExp(/(|a|z)*?/); 1231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re13)', '["", undefined]'); 1241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re13)', '["", undefined]'); 1251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re13)', '["", undefined]'); 1261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re13)', '["", undefined]'); 1271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty middle alternative non-greedy '*' 1291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re14 = new RegExp(/(a||z)*?/); 1301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re14)', '["", undefined]'); 1311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re14)', '["", undefined]'); 1321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re14)', '["", undefined]'); 1331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re14)', '["", undefined]'); 1341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1351510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty last alternative non-greedy '*' 1361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re15 = new RegExp(/(a|z|)*?/); 1371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re15)', '["", undefined]'); 1381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re15)', '["", undefined]'); 1391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re15)', '["", undefined]'); 1401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re15)', '["", undefined]'); 1411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty first alternative greedy '?' 1431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re16 = new RegExp(/(?:|a|z)?/); 1441510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re16)', '[""]'); 1451510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re16)', '[""]'); 1461510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re16)', '["a"]'); 1471510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re16)', '["a"]'); 1481510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty middle alternative greedy '?' 1501510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re17 = new RegExp(/(?:a||z)?/); 1511510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re17)', '[""]'); 1521510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re17)', '[""]'); 1531510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re17)', '["a"]'); 1541510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re17)', '["a"]'); 1551510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1561510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty last alternative greedy '?' 1571510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re18 = new RegExp(/(?:a|z|)?/); 1581510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re18)', '[""]'); 1591510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re18)', '[""]'); 1601510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re18)', '["a"]'); 1611510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re18)', '["a"]'); 1621510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1631510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty first alternative greedy '?' 1641510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re19 = new RegExp(/(|a|z)?/); 1651510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re19)', '["", undefined]'); 1661510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re19)', '["", undefined]'); 1671510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re19)', '["a", "a"]'); 1681510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re19)', '["a", "a"]'); 1691510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1701510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty middle alternative greedy '?' 1711510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re20 = new RegExp(/(a||z)?/); 1721510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re20)', '["", undefined]'); 1731510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re20)', '["", undefined]'); 1741510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re20)', '["a", "a"]'); 1751510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re20)', '["a", "a"]'); 1761510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1771510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty last alternative greedy '?' 1781510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re21 = new RegExp(/(a|z|)?/); 1791510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re21)', '["", undefined]'); 1801510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re21)', '["", undefined]'); 1811510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re21)', '["a", "a"]'); 1821510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re21)', '["a", "a"]'); 1831510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1841510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty first alternative non-greedy '?' 1851510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re22 = new RegExp(/(?:|a|z)??/); 1861510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re22)', '[""]'); 1871510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re22)', '[""]'); 1881510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re22)', '[""]'); 1891510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re22)', '[""]'); 1901510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1911510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty middle alternative non-greedy '?' 1921510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re23 = new RegExp(/(?:a||z)??/); 1931510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re23)', '[""]'); 1941510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re23)', '[""]'); 1951510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re23)', '[""]'); 1961510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re23)', '[""]'); 1971510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1981510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty last alternative non-greedy '?' 1991510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re24 = new RegExp(/(?:a|z|)??/); 2001510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re24)', '[""]'); 2011510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re24)', '[""]'); 2021510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re24)', '[""]'); 2031510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re24)', '[""]'); 2041510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2051510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty first alternative non-greedy '?' 2061510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re25 = new RegExp(/(|a|z)??/); 2071510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re25)', '["", undefined]'); 2081510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re25)', '["", undefined]'); 2091510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re25)', '["", undefined]'); 2101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re25)', '["", undefined]'); 2111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty middle alternative non-greedy '?' 2131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re26 = new RegExp(/(a||z)??/); 2141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re26)', '["", undefined]'); 2151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re26)', '["", undefined]'); 2161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re26)', '["", undefined]'); 2171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re26)', '["", undefined]'); 2181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Capturing empty last alternative non-greedy '?' 2201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re27 = new RegExp(/(a|z|)??/); 2211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re27)', '["", undefined]'); 2221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re27)', '["", undefined]'); 2231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re27)', '["", undefined]'); 2241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re27)', '["", undefined]'); 2251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty first alternative greedy '*' non-terminal 2271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re28 = new RegExp(/(?:|a|z)*x/); 2281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re28)', 'null'); 2291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re28)', '["x"]'); 2301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re28)', 'null'); 2311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re28)', '["aax"]'); 2321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty middle alternative greedy '*' non-terminal 2341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re29 = new RegExp(/(?:a||z)*x/); 2351510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re29)', 'null'); 2361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re29)', '["x"]'); 2371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re29)', 'null'); 2381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re29)', '["aax"]'); 2391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing empty last alternative greedy '*' non-terminal 2411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re30 = new RegExp(/(?:a|z|)*x/); 2421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re30)', 'null'); 2431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re30)', '["x"]'); 2441510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re30)', 'null'); 2451510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re30)', '["aax"]'); 2461510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2471510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing two possibly empty alternatives greedy '*' 2481510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re31 = new RegExp(/(?:a*|b*)*/); 2491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re31)', '[""]'); 2501510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re31)', '[""]'); 2511510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re31)', '["aa"]'); 2521510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s4.match(re31)', '["abab"]'); 2531510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2541510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Non-capturing two possibly empty non-greedy alternatives non-greedy '*' 2551510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re32 = new RegExp(/(?:a*?|b*?)*/); 2561510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re32)', '[""]'); 2571510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re32)', '[""]'); 2581510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re32)', '["aaaa"]'); 2591510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s4.match(re32)', '["abab"]'); 2601510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s5.match(re32)', '["ab"]'); 2611510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s6.match(re32)', '[""]'); 2621510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2631510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Three possibly empty alternatives with greedy + 2641510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re33 = new RegExp(/(?:(?:(?!))|g?|0*\*?)+/); 2651510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re33)', '[""]'); 2661510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re33)', '[""]'); 2671510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s7.match(re33)', '["g0"]'); 2681510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2691510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// first alternative zero length fixed count 2701510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar re34 = new RegExp(/(?:|a)/); 2711510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('emptyStr.match(re34)', '[""]'); 2721510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s1.match(re34)', '[""]'); 2731510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s2.match(re34)', '[""]'); 2741510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgshouldBe('s3.match(re34)', '[""]'); 275