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_civar t; 16425bb815Sopenharmony_ci 17425bb815Sopenharmony_cit = new RegExp ("^alma$").exec("alma"); 18425bb815Sopenharmony_ciassert (t == "alma"); 19425bb815Sopenharmony_ci 20425bb815Sopenharmony_cit = new RegExp ("^alma$").exec("almaa"); 21425bb815Sopenharmony_ciassert (t == undefined); 22425bb815Sopenharmony_ci 23425bb815Sopenharmony_cit = new RegExp ("^alma$").exec("aalma"); 24425bb815Sopenharmony_ciassert (t == undefined); 25425bb815Sopenharmony_ci 26425bb815Sopenharmony_cit = new RegExp ("^alma").exec("alma"); 27425bb815Sopenharmony_ciassert (t == "alma"); 28425bb815Sopenharmony_ci 29425bb815Sopenharmony_cit = new RegExp ("^alma").exec("almaa"); 30425bb815Sopenharmony_ciassert (t == "alma"); 31425bb815Sopenharmony_ci 32425bb815Sopenharmony_cit = new RegExp ("^alma").exec("aalma"); 33425bb815Sopenharmony_ciassert (t == undefined); 34425bb815Sopenharmony_ci 35425bb815Sopenharmony_cit = new RegExp ("alma$").exec("alma"); 36425bb815Sopenharmony_ciassert (t == "alma"); 37425bb815Sopenharmony_ci 38425bb815Sopenharmony_cit = new RegExp ("alma$").exec("almaa"); 39425bb815Sopenharmony_ciassert (t == undefined); 40425bb815Sopenharmony_ci 41425bb815Sopenharmony_cit = new RegExp ("alma$").exec("aalma"); 42425bb815Sopenharmony_ciassert (t == "alma"); 43425bb815Sopenharmony_ci 44425bb815Sopenharmony_cit = new RegExp ("\\bis\\b").exec("This island is beautiful"); 45425bb815Sopenharmony_ciassert (t == "is"); 46425bb815Sopenharmony_ci 47425bb815Sopenharmony_cit = new RegExp ("\\Bis\\B").exec("This island is beautiful"); 48425bb815Sopenharmony_ciassert (t == undefined); 49425bb815Sopenharmony_ci 50425bb815Sopenharmony_cit = new RegExp ("\\Bis").exec("This island is beautiful"); 51425bb815Sopenharmony_ciassert (t == "is"); 52425bb815Sopenharmony_ci 53425bb815Sopenharmony_cit = new RegExp ("is\\B").exec("This island is beautiful"); 54425bb815Sopenharmony_ciassert (t == "is"); 55425bb815Sopenharmony_ci 56425bb815Sopenharmony_cit = new RegExp ("\\Bis\\b").exec("This island is beautiful"); 57425bb815Sopenharmony_ciassert (t == "is"); 58425bb815Sopenharmony_ci 59425bb815Sopenharmony_cit = new RegExp ("\\bis\\B").exec("This island is beautiful"); 60425bb815Sopenharmony_ciassert (t == "is"); 61425bb815Sopenharmony_ci 62425bb815Sopenharmony_cit = new RegExp ("al(?=(ma))").exec("al"); 63425bb815Sopenharmony_ciassert (t == undefined); 64425bb815Sopenharmony_ci 65425bb815Sopenharmony_cit = new RegExp ("al(?!(ma))").exec("ala"); 66425bb815Sopenharmony_ciassert (t[0] == "al"); 67425bb815Sopenharmony_ciassert (t[1] == undefined); 68425bb815Sopenharmony_ci 69425bb815Sopenharmony_cit = new RegExp ("al(?=(ma))").exec("alma"); 70425bb815Sopenharmony_ciassert (t[0] == "al"); 71425bb815Sopenharmony_ciassert (t[1] == "ma"); 72425bb815Sopenharmony_ci 73425bb815Sopenharmony_cit = new RegExp ("al(?=(ma))").exec("almama"); 74425bb815Sopenharmony_ciassert (t[0] == "al"); 75425bb815Sopenharmony_ciassert (t[1] == "ma"); 76425bb815Sopenharmony_ci 77425bb815Sopenharmony_cit = new RegExp ("(al)(?=(ma))ma").exec("al"); 78425bb815Sopenharmony_ciassert (t == undefined); 79425bb815Sopenharmony_ci 80425bb815Sopenharmony_cit = new RegExp ("(al)(?=(ma)ma)").exec("al"); 81425bb815Sopenharmony_ciassert (t == undefined); 82425bb815Sopenharmony_ci 83425bb815Sopenharmony_cit = new RegExp ("al(?=(ma))*ma").exec("alma"); 84425bb815Sopenharmony_ciassert (t[0] == "alma"); 85425bb815Sopenharmony_ciassert (t[1] == undefined); 86425bb815Sopenharmony_ci 87425bb815Sopenharmony_cit = new RegExp ("al(?!(ma))*ma").exec("alma"); 88425bb815Sopenharmony_ciassert (t[0] == "alma"); 89425bb815Sopenharmony_ciassert (t[1] == undefined); 90425bb815Sopenharmony_ci 91425bb815Sopenharmony_cit = new RegExp ("al(?=(ma))ma").exec("alma"); 92425bb815Sopenharmony_ciassert (t[0] == "alma"); 93425bb815Sopenharmony_ciassert (t[1] == "ma"); 94425bb815Sopenharmony_ci 95425bb815Sopenharmony_cit = new RegExp ("al(?!(ma))ma").exec("alma"); 96425bb815Sopenharmony_ciassert (t == undefined); 97425bb815Sopenharmony_ci 98425bb815Sopenharmony_cit = new RegExp ("(al)(?=(ma))ma").exec("almama"); 99425bb815Sopenharmony_cit = new RegExp ("(al)(?=(ma)ma)").exec("almama"); 100425bb815Sopenharmony_ci 101425bb815Sopenharmony_cit = new RegExp ("al(?=(ma))ma").exec("almama"); 102425bb815Sopenharmony_ciassert (t[0] == "alma"); 103425bb815Sopenharmony_ciassert (t[1] == "ma"); 104425bb815Sopenharmony_ci 105425bb815Sopenharmony_cit = new RegExp ("al(?=(ma)ma)").exec("almama"); 106425bb815Sopenharmony_ciassert (t[0] == "al"); 107425bb815Sopenharmony_ciassert (t[1] == "ma"); 108425bb815Sopenharmony_ci 109425bb815Sopenharmony_cit = new RegExp ("al(?!(ma))ma").exec("almama"); 110425bb815Sopenharmony_ciassert (t == undefined); 111425bb815Sopenharmony_ci 112425bb815Sopenharmony_cit = new RegExp ("a(?=(a)(a))aab|aaac").exec("aaac"); 113425bb815Sopenharmony_cit = new RegExp ("a(?=(a)(a))aab|aaac").exec("aaab"); 114425bb815Sopenharmony_ci 115425bb815Sopenharmony_cit = new RegExp ("(?!(a)b)|ab").exec("ab"); 116425bb815Sopenharmony_ciassert (t[0] == "ab"); 117425bb815Sopenharmony_ciassert (t[1] == undefined); 118425bb815Sopenharmony_ci 119425bb815Sopenharmony_cit = new RegExp ("(?=(a)b)|ab").exec("ab"); 120425bb815Sopenharmony_ciassert (t[0] == ""); 121425bb815Sopenharmony_ciassert (t[1] == "a"); 122425bb815Sopenharmony_ci 123425bb815Sopenharmony_cit = new RegExp ("(?=a|.)Dt").exec("Dt"); 124425bb815Sopenharmony_ciassert (t == "Dt"); 125425bb815Sopenharmony_ci 126425bb815Sopenharmony_cit = new RegExp ("(?=.|a)Dt").exec("Dt"); 127425bb815Sopenharmony_ciassert (t == "Dt"); 128425bb815Sopenharmony_ci 129425bb815Sopenharmony_cit = new RegExp ("(?=a|b)Dt").exec("Dt"); 130425bb815Sopenharmony_ciassert (t == undefined); 131425bb815Sopenharmony_ci 132425bb815Sopenharmony_cit = new RegExp ("(?=.|P)").exec("a"); 133425bb815Sopenharmony_ciassert (t == ""); 134425bb815Sopenharmony_ci 135425bb815Sopenharmony_cit = new RegExp ("(?=.)").exec("a"); 136425bb815Sopenharmony_ciassert (t == ""); 137425bb815Sopenharmony_ci 138425bb815Sopenharmony_cit = new RegExp ("(?!a|.)Dt").exec("Dt"); 139425bb815Sopenharmony_ciassert (t == undefined); 140425bb815Sopenharmony_ci 141425bb815Sopenharmony_cit = new RegExp ("(?!.|a)Dt").exec("Dt"); 142425bb815Sopenharmony_ciassert (t == undefined); 143425bb815Sopenharmony_ci 144425bb815Sopenharmony_cit = new RegExp ("(?!a|b)Dt").exec("Dt"); 145425bb815Sopenharmony_ciassert (t == "Dt"); 146425bb815Sopenharmony_ci 147425bb815Sopenharmony_cit = new RegExp ("(?!.|P)").exec("a"); 148425bb815Sopenharmony_ciassert (t == ""); 149425bb815Sopenharmony_ci 150425bb815Sopenharmony_cit = new RegExp ("(?!.)").exec("a"); 151425bb815Sopenharmony_ciassert (t == ""); 152425bb815Sopenharmony_ci 153425bb815Sopenharmony_cit = new RegExp ("abc","g"); 154425bb815Sopenharmony_cit.lastIndex = {toString: function () { return "4"}}; 155425bb815Sopenharmony_civar result = t.exec("abc abc"); 156425bb815Sopenharmony_ciassert(result[0] === "abc"); 157425bb815Sopenharmony_ciassert(result.index === 6); 158425bb815Sopenharmony_ci 159425bb815Sopenharmony_cit = new RegExp ("abc","g"); 160425bb815Sopenharmony_cit.lastIndex = {valueOf: function () { return "4"}}; 161425bb815Sopenharmony_civar result = t.exec("abc abc"); 162425bb815Sopenharmony_ciassert(result[0] === "abc"); 163425bb815Sopenharmony_ciassert(result.index === 6); 164425bb815Sopenharmony_ci 165425bb815Sopenharmony_cit = new RegExp ("abc","g"); 166425bb815Sopenharmony_cit.lastIndex = "2" 167425bb815Sopenharmony_civar result = t.exec("abc abc"); 168425bb815Sopenharmony_ciassert(result[0] === "abc"); 169425bb815Sopenharmony_ciassert(result.index === 6); 170