OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Flags: --harmony-regexp-named-captures | 5 // Flags: --harmony-regexp-named-captures |
6 | 6 |
7 // Malformed named captures. | 7 // Malformed named captures. |
8 assertThrows("/(?<>a)/u"); // Empty name. | 8 assertThrows("/(?<>a)/u"); // Empty name. |
9 assertThrows("/(?<aa)/u"); // Unterminated name. | 9 assertThrows("/(?<aa)/u"); // Unterminated name. |
10 assertThrows("/(?<42a>a)/u"); // Name starting with digits. | 10 assertThrows("/(?<42a>a)/u"); // Name starting with digits. |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 assertEquals("a", groups.fst); | 201 assertEquals("a", groups.fst); |
202 assertEquals("b", groups.snd); | 202 assertEquals("b", groups.snd); |
203 assertEquals("a", fst); | 203 assertEquals("a", fst); |
204 assertEquals("b", snd); | 204 assertEquals("b", snd); |
205 assertEquals(0, offset); | 205 assertEquals(0, offset); |
206 assertEquals("abcd", str); | 206 assertEquals("abcd", str); |
207 return `${groups.snd}${groups.fst}`; | 207 return `${groups.snd}${groups.fst}`; |
208 }); | 208 }); |
209 assertEquals("bacd", result); | 209 assertEquals("bacd", result); |
210 } | 210 } |
211 | |
212 // @@replace with a string replacement argument (no named captures). | |
213 { | |
214 let re = /(.)(.)/u; | |
215 assertEquals("$<snd>$<fst>cd", "abcd".replace(re, "$<snd>$<fst>")); | |
216 assertEquals("bacd", "abcd".replace(re, "$2$1")); | |
217 assertEquals("$<sndcd", "abcd".replace(re, "$<snd")); | |
218 assertEquals("$<42a>cd", "abcd".replace(re, "$<42$1>")); | |
219 assertEquals("$<thd>cd", "abcd".replace(re, "$<thd>")); | |
220 assertEquals("$<a>cd", "abcd".replace(re, "$<$1>")); | |
221 } | |
222 | |
223 // @@replace with a string replacement argument (global, named captures). | |
224 { | |
225 let re = /(?<fst>.)(?<snd>.)/gu; | |
226 assertEquals("badc", "abcd".replace(re, "$<snd>$<fst>")); | |
227 assertEquals("badc", "abcd".replace(re, "$2$1")); | |
228 assertThrows(() => "abcd".replace(re, "$<snd"), SyntaxError); | |
229 assertEquals("", "abcd".replace(re, "$<42$1>")); | |
230 assertEquals("", "abcd".replace(re, "$<thd>")); | |
231 assertEquals("", "abcd".replace(re, "$<$1>")); | |
232 } | |
233 | |
234 // @@replace with a string replacement argument (non-global, named captures). | |
235 { | |
236 let re = /(?<fst>.)(?<snd>.)/u; | |
237 assertEquals("bacd", "abcd".replace(re, "$<snd>$<fst>")); | |
238 assertEquals("bacd", "abcd".replace(re, "$2$1")); | |
239 assertThrows(() => "abcd".replace(re, "$<snd"), SyntaxError); | |
240 assertEquals("cd", "abcd".replace(re, "$<42$1>")); | |
241 assertEquals("cd", "abcd".replace(re, "$<thd>")); | |
242 assertEquals("cd", "abcd".replace(re, "$<$1>")); | |
243 } | |
244 | |
245 // @@replace with a string replacement argument (slow, global, named captures). | |
246 { | |
247 let re = toSlowMode(/(?<fst>.)(?<snd>.)/gu); | |
248 assertEquals("badc", "abcd".replace(re, "$<snd>$<fst>")); | |
249 assertEquals("badc", "abcd".replace(re, "$2$1")); | |
250 assertThrows(() => "abcd".replace(re, "$<snd"), SyntaxError); | |
251 assertEquals("", "abcd".replace(re, "$<42$1>")); | |
252 assertEquals("", "abcd".replace(re, "$<thd>")); | |
253 assertEquals("", "abcd".replace(re, "$<$1>")); | |
254 } | |
255 | |
256 // @@replace with a string replacement argument (slow, non-global, | |
257 // named captures). | |
258 { | |
259 let re = toSlowMode(/(?<fst>.)(?<snd>.)/u); | |
260 assertEquals("bacd", "abcd".replace(re, "$<snd>$<fst>")); | |
261 assertEquals("bacd", "abcd".replace(re, "$2$1")); | |
262 assertThrows(() => "abcd".replace(re, "$<snd"), SyntaxError); | |
263 assertEquals("cd", "abcd".replace(re, "$<42$1>")); | |
264 assertEquals("cd", "abcd".replace(re, "$<thd>")); | |
265 assertEquals("cd", "abcd".replace(re, "$<$1>")); | |
266 } | |
OLD | NEW |