1425bb815Sopenharmony_ci// Copyright JS Foundation and other contributors, http://js.foundation 2425bb815Sopenharmony_ci// 3425bb815Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 4425bb815Sopenharmony_ci// you may not use this file except in compliance with the License. 5425bb815Sopenharmony_ci// You may obtain a copy of the License at 6425bb815Sopenharmony_ci// 7425bb815Sopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 8425bb815Sopenharmony_ci// 9425bb815Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software 10425bb815Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS 11425bb815Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12425bb815Sopenharmony_ci// See the License for the specific language governing permissions and 13425bb815Sopenharmony_ci// limitations under the License. 14425bb815Sopenharmony_ci 15425bb815Sopenharmony_ciassert (JSON.stringify (/(?:(a)*){3,}/.exec("aaaab")) === '["aaaa",null]'); 16425bb815Sopenharmony_ciassert (JSON.stringify (/((a)*){3,}/.exec("aaaab")) === '["aaaa","",null]'); 17425bb815Sopenharmony_ciassert (JSON.stringify (/((a)+){3,}/.exec("aaaab")) === '["aaaa","a","a"]'); 18425bb815Sopenharmony_ciassert (JSON.stringify (/((.)*){3,}/.exec("abcd")) === '["abcd","",null]'); 19425bb815Sopenharmony_ciassert (JSON.stringify (/((.)+){3,}/.exec("abcd")) === '["abcd","d","d"]'); 20425bb815Sopenharmony_ci 21425bb815Sopenharmony_ciassert (JSON.stringify (/((.){1,2}){1,2}/.exec("abc")) === '["abc","c","c"]'); 22425bb815Sopenharmony_ciassert (JSON.stringify (/(?:(a)*?)asd/.exec("aaasd")) === '["aaasd","a"]'); 23425bb815Sopenharmony_ciassert (JSON.stringify (/(?:(a)*)asd/.exec("aaasd")) === '["aaasd","a"]'); 24425bb815Sopenharmony_ci 25425bb815Sopenharmony_ciassert (JSON.stringify (/(.)*((a)*|(b)*)/.exec("ab")) === '["ab","b","",null,null]'); 26425bb815Sopenharmony_ciassert (JSON.stringify (/(.)*((x)|(y))+/.exec("xy")) === '["xy","x","y",null,"y"]'); 27425bb815Sopenharmony_ciassert (JSON.stringify (/(.)*((y)|(x))+/.exec("xy")) === '["xy","x","y","y",null]'); 28425bb815Sopenharmony_ci 29425bb815Sopenharmony_ciassert (JSON.stringify (/((?:a)*)/.exec("aaaad")) === '["aaaa","aaaa"]'); 30425bb815Sopenharmony_ciassert (JSON.stringify (/((y)+|x)+/.exec("x")) === '["x","x",null]'); 31425bb815Sopenharmony_ciassert (JSON.stringify (/((?:y)*|x)+/.exec("x")) === '["x","x"]'); 32425bb815Sopenharmony_ciassert (JSON.stringify (/((y)*|x)+/.exec("x")) === '["x","x",null]'); 33425bb815Sopenharmony_ciassert (JSON.stringify (/((y)*|x)*/.exec("x")) === '["x","x",null]'); 34425bb815Sopenharmony_ciassert (JSON.stringify (/(?:(y)*|x)*/.exec("x")) === '["x",null]'); 35425bb815Sopenharmony_ciassert (JSON.stringify (/(?:(y)*|(x))*/.exec("x")) === '["x",null,"x"]'); 36425bb815Sopenharmony_ci 37425bb815Sopenharmony_ciassert (JSON.stringify (/((?:a)*)asd/.exec("aaasd")) === '["aaasd","aa"]'); 38425bb815Sopenharmony_ciassert (JSON.stringify (/((?:a)+)asd/.exec("aaasd")) === '["aaasd","aa"]'); 39425bb815Sopenharmony_ciassert (JSON.stringify (/((?:a)*?)asd/.exec("aaasd")) === '["aaasd","aa"]'); 40425bb815Sopenharmony_ciassert (JSON.stringify (/((?:a)+?)asd/.exec("aaasd")) === '["aaasd","aa"]'); 41425bb815Sopenharmony_ci 42425bb815Sopenharmony_ciassert (JSON.stringify (/((y)|(z)|(a))*/.exec("yazx")) === '["yaz","z",null,"z",null]'); 43425bb815Sopenharmony_ciassert (JSON.stringify (/((y)|(z)|(.))*/.exec("yaz")) === '["yaz","z",null,"z",null]'); 44425bb815Sopenharmony_ciassert (JSON.stringify (/((y)*|(z)*|(a)*)*/.exec("yazx")) === '["yaz","z",null,"z",null]') 45425bb815Sopenharmony_ciassert (JSON.stringify (/((y)|(z)|(a))*/.exec("yazx")) === '["yaz","z",null,"z",null]') 46425bb815Sopenharmony_ciassert (JSON.stringify (/(?:(y)|(z)|(a))*/.exec("yazx")) === '["yaz",null,"z",null]') 47425bb815Sopenharmony_ciassert (JSON.stringify (/((y)|(z)|(a))+?/.exec("yazx")) === '["y","y","y",null,null]') 48425bb815Sopenharmony_ciassert (JSON.stringify (/(?:(y)|(z)|(a))+?/.exec("yazx")) === '["y","y",null,null]') 49425bb815Sopenharmony_ci 50425bb815Sopenharmony_ciassert (JSON.stringify (/(?:(x|y)*|z)*/.exec("yz")) === '["yz",null]'); 51425bb815Sopenharmony_ciassert (JSON.stringify (/((x|y)*|z)*/.exec("yz")) == '["yz","z",null]'); 52425bb815Sopenharmony_ciassert (JSON.stringify (/(((x|y)*|(v|w)*|z)*)asd/.exec("xyzwvxzasd")) === '["xyzwvxzasd","xyzwvxz","z",null,null]'); 53425bb815Sopenharmony_ci 54425bb815Sopenharmony_ciassert (JSON.stringify (/((a)*){1,3}b/.exec("ab")) === '["ab","a","a"]') 55425bb815Sopenharmony_ciassert (JSON.stringify (/((a)*){2,3}b/.exec("ab")) === '["ab","",null]') 56425bb815Sopenharmony_ciassert (JSON.stringify (/((a)*){3,3}b/.exec("ab")) === '["ab","",null]') 57425bb815Sopenharmony_ci 58425bb815Sopenharmony_ciassert (JSON.stringify (/((a)*){3,}b/.exec("aaaab")) === '["aaaab","",null]'); 59425bb815Sopenharmony_ciassert (JSON.stringify (/((a)*)*b/.exec("aaaab")) === '["aaaab","aaaa","a"]'); 60425bb815Sopenharmony_ci 61425bb815Sopenharmony_ciassert (JSON.stringify (/((bb?)*)*a/.exec("bbba")) === '["bbba","bbb","b"]'); 62425bb815Sopenharmony_ciassert (JSON.stringify (/((b)*)*a/.exec("bbba")) === '["bbba","bbb","b"]'); 63425bb815Sopenharmony_ci 64425bb815Sopenharmony_ciassert (JSON.stringify (/(aa|a)a/.exec("aa")) === '["aa","a"]'); 65425bb815Sopenharmony_ciassert (JSON.stringify (/(aa|a)?a/.exec("aa")) === '["aa","a"]'); 66425bb815Sopenharmony_ciassert (JSON.stringify (/(aa|a)+?a/.exec("aa")) === '["aa","a"]'); 67425bb815Sopenharmony_ciassert (JSON.stringify (/(?:aa|a)a/.exec("aa")) === '["aa"]'); 68425bb815Sopenharmony_ciassert (JSON.stringify (/(?:aa|a)?a/.exec("aa")) === '["aa"]'); 69425bb815Sopenharmony_ciassert (JSON.stringify (/(?:aa|a)+?a/.exec("aa")) === '["aa"]'); 70425bb815Sopenharmony_ci 71425bb815Sopenharmony_ciassert (JSON.stringify (/(aa|a)a/.exec("a")) === 'null'); 72425bb815Sopenharmony_ciassert (JSON.stringify (/(aa|a)?a/.exec("a")) === '["a",null]'); 73425bb815Sopenharmony_ciassert (JSON.stringify (/(aa|a)+?a/.exec("a")) === 'null'); 74425bb815Sopenharmony_ciassert (JSON.stringify (/(?:aa|a)a/.exec("a")) === 'null'); 75425bb815Sopenharmony_ciassert (JSON.stringify (/(?:aa|a)?a/.exec("a")) === '["a"]'); 76425bb815Sopenharmony_ciassert (JSON.stringify (/(?:aa|a)+?a/.exec("a")) === 'null'); 77425bb815Sopenharmony_ci 78425bb815Sopenharmony_ciassert (JSON.stringify (/a+/.exec("aaasd")) === '["aaa"]'); 79425bb815Sopenharmony_ciassert (JSON.stringify (/a+?/.exec("aaasd")) === '["a"]'); 80425bb815Sopenharmony_ci 81425bb815Sopenharmony_ciassert (JSON.stringify (/a+sd/.exec("aaasd")) === '["aaasd"]'); 82425bb815Sopenharmony_ciassert (JSON.stringify (/a+?sd/.exec("aaasd")) === '["aaasd"]'); 83425bb815Sopenharmony_ci 84425bb815Sopenharmony_ciassert (JSON.stringify (/a{2}sd/.exec("aaasd")) === '["aasd"]'); 85425bb815Sopenharmony_ciassert (JSON.stringify (/a{3}sd/.exec("aaasd")) === '["aaasd"]'); 86425bb815Sopenharmony_ci 87425bb815Sopenharmony_ciassert (JSON.stringify (/(?=a)/.exec("a")) === '[""]'); 88425bb815Sopenharmony_ciassert (JSON.stringify (/(?=a)+/.exec("a")) === '[""]'); 89425bb815Sopenharmony_ciassert (JSON.stringify (/(?=a)*/.exec("a")) === '[""]'); 90425bb815Sopenharmony_ciassert (JSON.stringify (/(?=(a))?/.exec("a")) === '["",null]'); 91425bb815Sopenharmony_ciassert (JSON.stringify (/(?=(a))+?/.exec("a")) === '["","a"]'); 92425bb815Sopenharmony_ciassert (JSON.stringify (/(?=(a))*?/.exec("a")) === '["",null]'); 93425bb815Sopenharmony_ci 94425bb815Sopenharmony_ciassert (JSON.stringify (/(?!a)/.exec("a")) === '[""]'); 95425bb815Sopenharmony_ciassert (JSON.stringify (/(?!a)+/.exec("a")) === '[""]'); 96425bb815Sopenharmony_ciassert (JSON.stringify (/(?!a)*/.exec("a")) === '[""]'); 97425bb815Sopenharmony_ciassert (JSON.stringify (/(?!(a))?/.exec("a")) === '["",null]'); 98425bb815Sopenharmony_ciassert (JSON.stringify (/(?!(a))+?/.exec("a")) === '["",null]'); 99425bb815Sopenharmony_ciassert (JSON.stringify (/(?!(a))*?/.exec("a")) === '["",null]'); 100425bb815Sopenharmony_ci 101425bb815Sopenharmony_ciassert (JSON.stringify (/al(?=(ma))*ma/.exec("alma")) === '["alma",null]'); 102425bb815Sopenharmony_ciassert (JSON.stringify (/al(?!(ma))*ma/.exec("alma")) === '["alma",null]'); 103425bb815Sopenharmony_ciassert (JSON.stringify (/al(?=(ma))+ma/.exec("alma")) === '["alma","ma"]'); 104425bb815Sopenharmony_ciassert (JSON.stringify (/al(?!(ma))+ma/.exec("alma")) === 'null'); 105425bb815Sopenharmony_ci 106425bb815Sopenharmony_ciassert (JSON.stringify (/(?=())x|/.exec("asd")) === '["",null]'); 107425bb815Sopenharmony_ciassert (JSON.stringify (/(?!())x|/.exec("asd")) === '["",null]'); 108425bb815Sopenharmony_ci 109425bb815Sopenharmony_ciassert (JSON.stringify (/(().*)+.$/.exec("abcdefg")) === '["abcdefg","abcdef",""]'); 110425bb815Sopenharmony_ciassert (JSON.stringify (/(().*)+?.$/.exec("abcdefg")) === '["abcdefg","abcdef",""]'); 111425bb815Sopenharmony_ciassert (JSON.stringify (/(?:().*)+.$/.exec("abcdefg")) === '["abcdefg",""]'); 112425bb815Sopenharmony_ciassert (JSON.stringify (/(?:().*)+?.$/.exec("abcdefg")) === '["abcdefg",""]'); 113425bb815Sopenharmony_ci 114425bb815Sopenharmony_ciassert (JSON.stringify(/((?=())|.)+^/.exec("a")) === '["","",""]'); 115425bb815Sopenharmony_ciassert (JSON.stringify(/(?:(|\b\w+?){2})+$/.exec("aaaa")) === '["aaaa","aaaa"]'); 116