// Copyright 2017 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- description: If there are no named captures, don't replace $<> esid: sec-getsubstitution features: [regexp-named-groups] info: | Runtime Semantics: GetSubstitution( matched, str, position, captures, namedCaptures, replacement ) Table: Replacement Text Symbol Substitutions Unicode Characters: $< Replacement text: 1. If namedCaptures is undefined, the replacement text is the literal string $<. ---*/ // @@replace with a string replacement argument (no named captures). let source = "(.)(.)|(x)"; for (let flags of ["", "u"]) { let re = new RegExp(source, flags); assert.sameValue("$$cd", "abcd".replace(re, "$$")); assert.sameValue("bacd", "abcd".replace(re, "$2$1")); assert.sameValue("cd", "abcd".replace(re, "$3")); assert.sameValue("$cd", "abcd".replace(re, "$<42$1>")); assert.sameValue("$cd", "abcd".replace(re, "$")); assert.sameValue("$cd", "abcd".replace(re, "$<$1>")); } reportCompare(0, 0);