• jgruber's avatar
    [regexp] Named capture support for string replacements · 17f13863
    jgruber authored
    This implements support for named captures in
    RegExp.prototype[@@replace] for when the replaceValue is not callable.
    
    Named captures can be referenced from replacement strings by using the
    "$<name>" syntax. A couple of examples:
    
    let re = /(?<fst>.)(?<snd>.)/u;
    "abcd".replace(re, "$<snd>$<fst>")  // "bacd"
    "abcd".replace(re, "$2$1")     // "bacd" (numbered refs work as always)
    "abcd".replace(re, "$<snd")    // SyntaxError (unterminated named ref)
    "abcd".replace(re, "$<42$1>")  // "cd" (invalid name)
    "abcd".replace(re, "$<thd>")   // "cd" (non-existent name)
    "abcd".replace(/(?<fst>.)|(?<snd>.)/u, "$<snd>")  // "cd" (non-matched capture)
    
    Support is currently behind the --harmony-regexp-named-captures flag.
    
    BUG=v8:5437
    
    Review-Url: https://codereview.chromium.org/2775303002
    Cr-Commit-Position: refs/heads/master@{#44171}
    17f13863
Name
Last commit
Last update
..
bytecode_expectations Loading commit data...
bytecode-expectations-printer.cc Loading commit data...
bytecode-expectations-printer.h Loading commit data...
generate-bytecode-expectations.cc Loading commit data...
interpreter-tester.cc Loading commit data...
interpreter-tester.h Loading commit data...
source-position-matcher.cc Loading commit data...
source-position-matcher.h Loading commit data...
test-bytecode-generator.cc Loading commit data...
test-interpreter-intrinsics.cc Loading commit data...
test-interpreter.cc Loading commit data...
test-source-positions.cc Loading commit data...