| 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 |