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 r;
16425bb815Sopenharmony_ci
17425bb815Sopenharmony_cir = new RegExp ("a");
18425bb815Sopenharmony_ciassert (r.exec ("a") == "a");
19425bb815Sopenharmony_ciassert (r.exec ("b") == undefined);
20425bb815Sopenharmony_ci
21425bb815Sopenharmony_cir = new RegExp ("abc");
22425bb815Sopenharmony_ciassert (r.exec ("abc") == "abc");
23425bb815Sopenharmony_ci
24425bb815Sopenharmony_cir = new RegExp ("a*");
25425bb815Sopenharmony_ciassert (r.exec ("aaa") == "aaa");
26425bb815Sopenharmony_ciassert (r.exec ("b") == "");
27425bb815Sopenharmony_ci
28425bb815Sopenharmony_cir = new RegExp ("a+");
29425bb815Sopenharmony_ciassert (r.exec ("aaa") == "aaa");
30425bb815Sopenharmony_ciassert (r.exec ("b") == undefined);
31425bb815Sopenharmony_ci
32425bb815Sopenharmony_cir = new RegExp ("ab*");
33425bb815Sopenharmony_ciassert (r.exec ("a") == "a");
34425bb815Sopenharmony_ciassert (r.exec ("ab") == "ab");
35425bb815Sopenharmony_ciassert (r.exec ("abbbb") == "abbbb");
36425bb815Sopenharmony_ciassert (r.exec ("bbb") == undefined);
37425bb815Sopenharmony_ci
38425bb815Sopenharmony_cir = new RegExp ("a?");
39425bb815Sopenharmony_ciassert (r.exec ("a") == "a");
40425bb815Sopenharmony_ciassert (r.exec ("b") == "");
41425bb815Sopenharmony_ci
42425bb815Sopenharmony_cir = new RegExp ("a{4}");
43425bb815Sopenharmony_ciassert (r.exec ("aaa") == undefined);
44425bb815Sopenharmony_ciassert (r.exec ("aaaaa") == "aaaa");
45425bb815Sopenharmony_ciassert (r.exec ("aaaa") == "aaaa");
46425bb815Sopenharmony_ci
47425bb815Sopenharmony_cir = new RegExp ("a{2,6}");
48425bb815Sopenharmony_ciassert (r.exec ("a") == undefined);
49425bb815Sopenharmony_ciassert (r.exec ("aa") == "aa");
50425bb815Sopenharmony_ciassert (r.exec ("aaaaaa") == "aaaaaa");
51425bb815Sopenharmony_ciassert (r.exec ("aaaaaaa") == "aaaaaa");
52425bb815Sopenharmony_ci
53425bb815Sopenharmony_cir = new RegExp (".*");
54425bb815Sopenharmony_ciassert (r.exec ("abcdefghijkl") == "abcdefghijkl");
55425bb815Sopenharmony_ci
56425bb815Sopenharmony_cir = /\n/;
57425bb815Sopenharmony_ciassert (r.exec ("\n") == "\n");
58425bb815Sopenharmony_ci
59425bb815Sopenharmony_ciassert (/[\12]+/.exec ("1\n\n\n\n\n2") == "\n\n\n\n\n");
60425bb815Sopenharmony_ciassert (/[\1284]+/.exec ("1\n\n8\n4\n\n2") == "\n\n8\n4\n\n");
61425bb815Sopenharmony_ciassert (/[\89]12/.exec ("1\9128123") == "912");
62425bb815Sopenharmony_ciassert (/[\11]/.exec ("1\n\n\t\n\n2") == "\t");
63425bb815Sopenharmony_ciassert (/[\142][\143][\144]/.exec ("abcde") == "bcd");
64425bb815Sopenharmony_ci
65425bb815Sopenharmony_ciassert (/\12+/.exec ("1\n\n\n\n\n2") == "\n\n\n\n\n");
66425bb815Sopenharmony_ciassert (/\11/.exec ("1\n\n\t\n\n2") == "\t");
67425bb815Sopenharmony_ciassert (/\142\143\144/.exec ("abcde") == "bcd");
68425bb815Sopenharmony_ciassert (/\942\143\144/.exec ("a942cde") == "942cd");
69425bb815Sopenharmony_ciassert (/\14234/.exec ("b34") == "b34");
70425bb815Sopenharmony_ci
71425bb815Sopenharmony_ciassert (/(\d+)\2([abc]+)\1\2/.exec("123abc123abc") == "123abc123abc,123,abc");
72425bb815Sopenharmony_ciassert (/([abc]+)\40([d-f]+)\12\1/.exec("abc def\nabc") == "abc def\nabc,abc,def");
73425bb815Sopenharmony_ci
74425bb815Sopenharmony_civar expected = "8765432911,8,7,6,5,4,3,2,9,1";
75425bb815Sopenharmony_ciassert (/(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)\9(\d)\9/.exec("8765432911") == expected);
76425bb815Sopenharmony_ci
77425bb815Sopenharmony_cir = /\c/;
78425bb815Sopenharmony_ciassert (r.exec ("\\c") == "\\c");
79425bb815Sopenharmony_ci
80425bb815Sopenharmony_cir = /[\c]/;
81425bb815Sopenharmony_ciassert (r.exec ("c") == "c");
82425bb815Sopenharmony_ci
83425bb815Sopenharmony_cir = /[\c1]/;
84425bb815Sopenharmony_ciassert (r.exec ("\u0011") == "\u0011");
85425bb815Sopenharmony_ci
86425bb815Sopenharmony_cir = /\c3/;
87425bb815Sopenharmony_ciassert (r.exec ("\\c3") == "\\c3");
88425bb815Sopenharmony_ci
89425bb815Sopenharmony_cir = /\cIasd/;
90425bb815Sopenharmony_ciassert (r.exec ("\tasd") == "\tasd");
91425bb815Sopenharmony_ci
92425bb815Sopenharmony_cir = /.??$/;
93425bb815Sopenharmony_ciassert (JSON.stringify (r.exec("asd")) === '["d"]');
94