64aca0a30b4a7ffc57279d8d087a4fb03f3f152b
[WebKit-https.git] / LayoutTests / js / regexp-unicode-expected.txt
1 Test for unicode regular expression processing
2
3 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
4
5
6 PASS "a".match(/a/u)[0].length is 1
7 PASS "a".match(/A/ui)[0].length is 1
8 PASS "a".match(/a/u)[0].length is 1
9 PASS "a".match(/A/iu)[0].length is 1
10 PASS "Ȓ".match(/Ȓ/u)[0].length is 1
11 PASS "Ȓ".match(/Ȓ/u)[0].length is 1
12 PASS "ሴ".match(/ሴ/u)[0].length is 1
13 PASS "ሴ".match(/ሴ/u)[0].length is 1
14 PASS "⪼".match(/⪼/u)[0].length is 1
15 PASS "㿭".match(/㿭/u)[0].length is 1
16 PASS "𒍅".match(/𒍅/u)[0].length is 2
17 PASS "𒍅".match(/𒍅/u)[0].length is 2
18 PASS "𝌆".match(/𝌆/u)[0].length is 2
19 PASS /𐑏/u.test("𐑏") is true
20 PASS /𐑏/u.test("𐑏") is true
21 PASS "𝌆".match(/𝌆/u)[0].length is 2
22 PASS /(𐀀|𐐀|𐐩)/u.test("𐐀") is true
23 PASS "𐄣".match(/a|𐄣|b/u)[0].length is 2
24 PASS "b".match(/a|𐄣|b/u)[0].length is 1
25 PASS /(?:a|𐄣|b)x/u.test("𐄣") is false
26 PASS /(?:a|𐄣|b)x/u.test("𐄣x") is true
27 PASS /(?:a|𐄣|b)x/u.test("b") is false
28 PASS /(?:a|𐄣|b)x/u.test("bx") is true
29 PASS "a𐄣x".match(/a𐄣b|a𐄣x/u)[0].length is 4
30 PASS /(𐀀|𐐀|𐐩)x/ui.test("𐐀x") is true
31 PASS /(𐀀|𐐀|𐐩)x/ui.test("𐐩x") is true
32 PASS /(𐀀|𐐀|𐐩)x/ui.test("𐐁x") is true
33 PASS /(𐀀|𐐀|𐐩)x/ui.test("𐐨x") is true
34 PASS "𐐩".match(/a|𐐁|b/iu)[0].length is 2
35 PASS "B".match(/a|𐄣|b/iu)[0].length is 1
36 PASS /(?:A|𐄣|b)x/iu.test("𐄣") is false
37 PASS /(?:A|𐄣|b)x/iu.test("𐄣x") is true
38 PASS /(?:A|𐄣|b)x/iu.test("b") is false
39 PASS /(?:A|𐄣|b)x/iu.test("bx") is true
40 PASS "a𐄣X".match(/a𐄣b|a𐄣x/iu)[0].length is 4
41 PASS "Ťx".match(/ťx/iu)[0].length is 2
42 PASS /\w/iu.test("ſ") is true
43 PASS /\w/iu.test("K") is true
44 PASS /\W/iu.test("ſ") is false
45 PASS /\W/iu.test("K") is false
46 PASS /[\w\d]/iu.test("ſ") is true
47 PASS /[\w\d]/iu.test("K") is true
48 PASS /[^\w\d]/iu.test("ſ") is false
49 PASS /[^\w\d]/iu.test("K") is false
50 PASS /[\W\d]/iu.test("ſ") is false
51 PASS /[\W\d]/iu.test("K") is false
52 PASS /[^\W\d]/iu.test("ſ") is true
53 PASS /[^\W\d]/iu.test("K") is true
54 PASS /\w/iu.test("S") is true
55 PASS /\w/iu.test("K") is true
56 PASS /\W/iu.test("S") is false
57 PASS /\W/iu.test("K") is false
58 PASS /[\w\d]/iu.test("S") is true
59 PASS /[\w\d]/iu.test("K") is true
60 PASS /[^\w\d]/iu.test("S") is false
61 PASS /[^\w\d]/iu.test("K") is false
62 PASS /[\W\d]/iu.test("S") is false
63 PASS /[\W\d]/iu.test("K") is false
64 PASS /[^\W\d]/iu.test("S") is true
65 PASS /[^\W\d]/iu.test("K") is true
66 PASS "Grasſoden is old German for grass".match(/.*?\Bs\u017foden/iu)[0] is "Grasſoden"
67 PASS "Grasſoden is old German for grass".match(/.*?\B\u017foden/iu)[0] is "Grasſoden"
68 PASS "Grasſoden is old German for grass".match(/.*?\Boden/iu)[0] is "Grasſoden"
69 PASS "Grasſoden is old German for grass".match(/.*?\Bden/iu)[0] is "Grasſoden"
70 PASS "Water freezes at 273K which is 0C.".split(/\b\s/iu) is ["Water","freezes","at","273K","which","is","0C."]
71 PASS "𝌆".match(/^.$/u)[0].length is 2
72 PASS "It is 78°".match(/.*/u)[0].length is 9
73 PASS stringWithDanglingFirstSurrogate.match(/.*/u)[0].length is 3
74 PASS stringWithDanglingSecondSurrogate.match(/.*/u)[0].length is 3
75 PASS "𝌆".match(/[𝌆a]/)[0].length is 1
76 PASS "𝌆".match(/[a𝌆]/u)[0].length is 2
77 PASS "𝌆".match(/[𝌆a]/u)[0].length is 2
78 PASS "𝌆".match(/[a-𝌆]/)[0].length is 1
79 PASS "𝌆".match(/[a-𝌆]/u)[0].length is 2
80 PASS "X".match(/[ -𐑏]/u)[0].length is 1
81 PASS "က".match(/[ -𐑏]/u)[0].length is 1
82 PASS "𐐧".match(/[ -𐑏]/u)[0].length is 2
83 PASS re1.test("Z") is false
84 PASS re1.test("က") is false
85 PASS re1.test("𐐀") is false
86 PASS re2.test("A") is true
87 PASS re2.test("￿") is false
88 PASS re2.test("𒍅") is true
89 PASS /[𐰁�#�]/u.exec("𐰁").toString() is "𐰁"
90 PASS /[�𐰁�]/u.exec("𐰁").toString() is "𐰁"
91 PASS /[�#�𐰁]/u.exec("𐰁").toString() is "𐰁"
92 PASS /[�𐰁�]/u.exec("𐰁").toString() is "𐰁"
93 PASS /[𐰁�#�]{2}/u.exec("𐰁") is null
94 PASS /[�𐰁�]{2}/u.exec("𐰁") is null
95 PASS /[�#�𐰁]{2}/u.exec("𐰁") is null
96 PASS /[�𐰁�]{2}/u.exec("𐰁") is null
97 PASS /�|�|𐰁/u.exec("𐰁").toString() is "𐰁"
98 PASS /�|𐰁|�/u.exec("𐰁").toString() is "𐰁"
99 PASS /�|�|𐰁/u.exec("�").toString() is "�"
100 PASS /�|𐰁|�/u.exec("�").toString() is "�"
101 PASS /�𐰁/u.exec("𐰁") is null
102 PASS /�𐰁/u.exec("�") is null
103 PASS "�𐰁".match(/�𐰁/u)[0].length is 3
104 PASS /𝌆{2}/u.test("𝌆𝌆") is true
105 PASS /𝌆{2}/u.test("𝌆𝌆") is true
106 PASS "𐐅𐐅𐐅𐐅".match(/𐐅{3}/u)[0] is "𐐅𐐅𐐅"
107 PASS "𐐂𐐅𐐅𐐅".match(/𐐅{3}/u)[0] is "𐐅𐐅𐐅"
108 PASS "𐐁𐐁𐐀".match(/𐐁{1,3}/u)[0] is "𐐁𐐁"
109 PASS "𐐁𐐩".match(/𐐁{1,3}/iu)[0] is "𐐁𐐩"
110 PASS "𐐁𐐩𐐪𐐩".match(/𐐁{1,}/iu)[0] is "𐐁𐐩"
111 PASS "𐌑𐌑𐌑".match(/𐌑*a|𐌑*./u)[0] is "𐌑𐌑𐌑"
112 PASS "a𐌑𐌑".match(/a𐌑*?$/u)[0] is "a𐌑𐌑"
113 PASS "a𐌑𐌑𐌑c".match(/a𐌑*cd|a𐌑*c/u)[0] is "a𐌑𐌑𐌑c"
114 PASS "a𐌑𐌑𐌑c".match(/a𐌑+cd|a𐌑+c/u)[0] is "a𐌑𐌑𐌑c"
115 PASS "𐌑𐌑𐌑".match(/𐌑+?a|𐌑+?./u)[0] is "𐌑𐌑"
116 PASS "𐌑𐌑𐌑".match(/𐌑+?a|𐌑+?$/u)[0] is "𐌑𐌑𐌑"
117 PASS "a𐌑𐌑𐌑c".match(/a𐌑*?cd|a𐌑*?c/u)[0] is "a𐌑𐌑𐌑c"
118 PASS "a𐌑𐌑𐌑c".match(/a𐌑+?cd|a𐌑+?c/u)[0] is "a𐌑𐌑𐌑c"
119 PASS "𐌑𐌑𐌑".match(/𐌑+?a|𐌑+?./iu)[0] is "𐌑𐌑"
120 PASS "𐐪𐐪𐌑".match(/𐐂*𐈀|𐐂*𐌑/iu)[0] is "𐐪𐐪𐌑"
121 PASS "𐐪𐐪𐌑".match(/𐐂+𐈀|𐐂+𐌑/iu)[0] is "𐐪𐐪𐌑"
122 PASS "𐐪𐐪𐌑".match(/𐐂*?𐈀|𐐂*?𐌑/iu)[0] is "𐐪𐐪𐌑"
123 PASS "𐐪𐐪𐌑".match(/𐐂+?𐈀|𐐂+?𐌑/iu)[0] is "𐐪𐐪𐌑"
124 PASS "ab𐌑c𐨁".match(/abc|ab𐌑cd|ab𐌑c𐨁d|ab𐌑c𐨁/u)[0] is "ab𐌑c𐨁"
125 PASS "ab𐐨c𐨁".match(/abc|ab𐐀cd|ab𐐀c𐨁d|ab𐐀c𐨁/iu)[0] is "ab𐐨c𐨁"
126 PASS /abc|ab𐐀cd|ab𐐀c𐨁d|ab𐐀c𐨁/iu.test("qwerty123") is false
127 PASS "a𐐨𐐨𐐨c".match(/ac|a𐐀*cd|a𐐀+cd|a𐐀+c/iu)[0] is "a𐐨𐐨𐐨c"
128 PASS "ab𐐨𐐨𐐨c𐨁".match(/abc|ab𐐀*cd|ab𐐀+c𐨁d|ab𐐀+c𐨁/iu)[0] is "ab𐐨𐐨𐐨c𐨁"
129 PASS "ab𐐨𐐨𐐨".match(/abc|ab𐐨*./u)[0] is "ab𐐨𐐨𐐨"
130 PASS "ab𐐨𐐨𐐨".match(/abc|ab𐐀*./iu)[0] is "ab𐐨𐐨𐐨"
131 PASS "𐐀".match(/a*/u)[0].length is 0
132 PASS "𐐀".match(/a*/ui)[0].length is 0
133 PASS "𐐀".match(/\d*/u)[0].length is 0
134 PASS "123𐐀".match(/\d*/u)[0] is "123"
135 PASS "12X3𐐀4".match(/\d{0,1}/ug) is ["1", "2", "", "3", "", "4", ""]
136 PASS "𐐂𐐅𐐅𐐂𐐅𐐅𐐅".match(/𐐅{3}/u)[0] is "𐐅𐐅𐐅"
137 PASS "a𐐐𐐐b".match(/a(𐐐*?)bc|a(𐐐*?)b/ui)[0] is "a𐐐𐐐b"
138 PASS match3[0] is "a𐐐𐐐b"
139 PASS match3[1] is undefined.
140 PASS match3[2] is "a𐐐𐐐b"
141 PASS match4[0] is "a𐐸𐐸b"
142 PASS match4[1] is undefined.
143 PASS match4[2] is "𐐸𐐸"
144 PASS match5[0] is "a𐐒𐐒b𐐒𐐒"
145 PASS match5[1] is undefined.
146 PASS match5[2] is "𐐒𐐒"
147 PASS match6[0] is "a𐐒𐐒b𐐺𐐒"
148 PASS match6[1] is undefined.
149 PASS match6[2] is "𐐒𐐒"
150 PASS /ſtop/ui.test("stop") is true
151 PASS /stop/ui.test("ſtop") is true
152 PASS /Kelvin/ui.test("kelvin") is true
153 PASS /KELVIN/ui.test("Kelvin") is true
154 PASS /\u{1}/.test("u") is true
155 PASS /\u{4}/.test("u") is false
156 PASS /\u{4}/.test("uuuu") is true
157 PASS "800-555-1212".match(/[0-9\-]*/u)[0].length is 12
158 PASS "🂡🃑🂸🃉🃚".match(re7)[0] is "🂡🃑"
159 PASS "🂡🃑🂱🃉🃚".match(re7)[0] is "🂡🃑🂱"
160 PASS "🂡🃑🂱🃁🃚".match(re7)[0] is "🂡🃑🂱🃁"
161 PASS "🂣🃑🂱🃁🃚".match(re7)[0] is "🃑🂱🃁"
162 PASS "𐌑𐌐𐌑".match(/[𐌁𐌑]*a|[𐌐𐌑]*./iu)[0] is "𐌑𐌐𐌑"
163 PASS "𐌑𐌐𐌑".match(/[𐌁𐌑]*?a|[𐌐𐌑]*?./iu)[0] is "𐌑"
164 PASS "𐌑𐌐𐌑".match(/[𐌁𐌑]+a|[𐌐𐌑]+./iu)[0] is "𐌑𐌐𐌑"
165 PASS "𐌑𐌐𐌑".match(/[𐌁𐌑]+?a|[𐌐𐌑]+?./iu)[0] is "𐌑𐌐"
166 PASS "𐌑𐌐𐌑".match(/[𐌁𐌑]+?a$|[𐌐𐌑]+?.$/iu)[0] is "𐌑𐌐𐌑"
167 PASS "𐌑𐌐𐌑".match(/[𐌁𐌑x]+a|[𐌐𐌑x]+./iu)[0] is "𐌑𐌐𐌑"
168 PASS "𐌑𐌐𐌑".match(/[𐌁𐌑x]+?a|[𐌐𐌑x]+?./iu)[0] is "𐌑𐌐"
169 PASS "C83|НАЧАТЬ".match(re8)[0] is "C83|НАЧАТЬ"
170 PASS "This.Is.16.Chars|НАЧАТЬ".match(re8)[0] is "This.Is.16.Chars|НАЧАТЬ"
171 PASS "Testing\nሴ 1 2 3".match(/^[က-𐃿] 1 2 3/um)[0] is "ሴ 1 2 3"
172 PASS "Testing\n𐃰 1 2 3".match(/^[က-𐃿] 1 2 3/um)[0] is "𐃰 1 2 3"
173 PASS "g\nሴ 1 2 3".match(/g\n^[က-𐃿] 1 2 3/um)[0] is "g\nሴ 1 2 3"
174 PASS "g\n𐃰 1 2 3".match(/g\n^[က-𐃿] 1 2 3/um)[0] is "g\n𐃰 1 2 3"
175 PASS "Testing ሴ\n1 2 3".match(/Testing [က-𐃿]$/um)[0] is "Testing ሴ"
176 PASS "Testing 𐃰\n1 2 3".match(/Testing [က-𐃿]$/um)[0] is "Testing 𐃰"
177 PASS "Testing ሴ\n1 2 3".match(/g [က-𐃿]$\n1/um)[0] is "g ሴ\n1"
178 PASS "Testing 𐃰\n1 2 3".match(/g [က-𐃿]$\n1/um)[0] is "g 𐃰\n1"
179 PASS "this is b\ba test".match(/is b\cha test/u)[0].length is 11
180 PASS new RegExp("\\/", "u").source is "\\/"
181 PASS r = new RegExp("\\u{110000}", "u") threw exception SyntaxError: Invalid regular expression: invalid Unicode {} escape.
182 PASS r = new RegExp("𐐅{2147483648}", "u") threw exception SyntaxError: Invalid regular expression: pattern exceeds string length limits.
183 PASS /{/u threw exception SyntaxError: Invalid regular expression: incomplete {} quantifier for Unicode pattern.
184 PASS /[a-\d]/u threw exception SyntaxError: Invalid regular expression: invalid range in character class for Unicode pattern.
185 PASS /]/u threw exception SyntaxError: Invalid regular expression: unmatched ] or } bracket for Unicode pattern.
186 PASS /\c9/u threw exception SyntaxError: Invalid regular expression: invalid \c escape for Unicode pattern.
187 PASS r = new RegExp("\\-", "u") threw exception SyntaxError: Invalid regular expression: invalid escaped character for Unicode pattern.
188 PASS r = new RegExp("\\a", "u") threw exception SyntaxError: Invalid regular expression: invalid escaped character for Unicode pattern.
189 PASS r = new RegExp("[\\a]", "u") threw exception SyntaxError: Invalid regular expression: invalid escaped character for Unicode pattern.
190 PASS r = new RegExp("[\\b]", "u") threw exception SyntaxError: Invalid regular expression: invalid escaped character for Unicode pattern.
191 PASS r = new RegExp("[\\B]", "u") threw exception SyntaxError: Invalid regular expression: invalid escaped character for Unicode pattern.
192 PASS r = new RegExp("\\x", "u") threw exception SyntaxError: Invalid regular expression: invalid escaped character for Unicode pattern.
193 PASS r = new RegExp("[\\x]", "u") threw exception SyntaxError: Invalid regular expression: invalid escaped character for Unicode pattern.
194 PASS r = new RegExp("\\u", "u") threw exception SyntaxError: Invalid regular expression: invalid escaped character for Unicode pattern.
195 PASS r = new RegExp("[\\u]", "u") threw exception SyntaxError: Invalid regular expression: invalid escaped character for Unicode pattern.
196 PASS r = new RegExp("\\u{", "u") threw exception SyntaxError: Invalid regular expression: invalid Unicode {} escape.
197 PASS r = new RegExp("\\u{\udead", "u") threw exception SyntaxError: Invalid regular expression: invalid Unicode {} escape.
198 PASS /\1/u threw exception SyntaxError: Invalid regular expression: invalid backreference for Unicode pattern.
199 PASS /\2/u threw exception SyntaxError: Invalid regular expression: invalid backreference for Unicode pattern.
200 PASS /\3/u threw exception SyntaxError: Invalid regular expression: invalid backreference for Unicode pattern.
201 PASS /\4/u threw exception SyntaxError: Invalid regular expression: invalid backreference for Unicode pattern.
202 PASS /\5/u threw exception SyntaxError: Invalid regular expression: invalid backreference for Unicode pattern.
203 PASS /\6/u threw exception SyntaxError: Invalid regular expression: invalid backreference for Unicode pattern.
204 PASS /\7/u threw exception SyntaxError: Invalid regular expression: invalid backreference for Unicode pattern.
205 PASS /\8/u threw exception SyntaxError: Invalid regular expression: invalid backreference for Unicode pattern.
206 PASS /\9/u threw exception SyntaxError: Invalid regular expression: invalid backreference for Unicode pattern.
207 PASS /(.)\1/u did not throw exception.
208 PASS /(.)(.)\2/u did not throw exception.
209 PASS /(.)(.)\3/u threw exception SyntaxError: Invalid regular expression: invalid backreference for Unicode pattern.
210 PASS /\1/ did not throw exception.
211 PASS /\2/ did not throw exception.
212 PASS /\3/ did not throw exception.
213 PASS /\4/ did not throw exception.
214 PASS /\5/ did not throw exception.
215 PASS /\6/ did not throw exception.
216 PASS /\7/ did not throw exception.
217 PASS /\8/ did not throw exception.
218 PASS /\9/ did not throw exception.
219 PASS successfullyParsed is true
220
221 TEST COMPLETE
222