KT-50173 Fix Regex.escapeReplacement function in JS
This commit is contained in:
@@ -318,7 +318,7 @@ public actual class Regex actual constructor(pattern: String, options: Set<Regex
|
|||||||
public actual fun escapeReplacement(literal: String): String = literal.nativeReplace(replacementEscape, "\\$&")
|
public actual fun escapeReplacement(literal: String): String = literal.nativeReplace(replacementEscape, "\\$&")
|
||||||
|
|
||||||
private val patternEscape = RegExp("""[\\^$*+?.()|[\]{}]""", "g")
|
private val patternEscape = RegExp("""[\\^$*+?.()|[\]{}]""", "g")
|
||||||
private val replacementEscape = RegExp("""[\$]""", "g")
|
private val replacementEscape = RegExp("""[\\$]""", "g")
|
||||||
|
|
||||||
internal fun nativeEscapeReplacement(literal: String): String = literal.nativeReplace(nativeReplacementEscape, "$$$$")
|
internal fun nativeEscapeReplacement(literal: String): String = literal.nativeReplace(nativeReplacementEscape, "$$$$")
|
||||||
private val nativeReplacementEscape = RegExp("""\$""", "g")
|
private val nativeReplacementEscape = RegExp("""\$""", "g")
|
||||||
|
|||||||
@@ -263,7 +263,10 @@ class RegexTest {
|
|||||||
// inserts the first captured group
|
// inserts the first captured group
|
||||||
assertEquals("(123)-(456)", pattern.replace(input, "($1)"))
|
assertEquals("(123)-(456)", pattern.replace(input, "($1)"))
|
||||||
|
|
||||||
assertEquals("$&-$&", pattern.replace(input, Regex.escapeReplacement("$&")))
|
for (r in listOf("$&", "\\$", "\\ $", "$\\")) {
|
||||||
|
assertEquals("$r-$r", pattern.replace(input, Regex.escapeReplacement(r)))
|
||||||
|
}
|
||||||
|
|
||||||
assertEquals("X-456", pattern.replaceFirst(input, "X"))
|
assertEquals("X-456", pattern.replaceFirst(input, "X"))
|
||||||
|
|
||||||
val longInput = "0123456789ABC"
|
val longInput = "0123456789ABC"
|
||||||
|
|||||||
Reference in New Issue
Block a user