"foo\r\nbar".replace(/(foo).+/m, "bar")
Hello. I can not understand why this code does not replace foo on bar
I can not understand why this code does not replace foo on bar
Because the dot . explicitly does not match newline characters.
This would work:
"foo\r\nbar".replace(/foo[\s\S]+/m, "bar")
because newline characters count as whitespace (\s).
Note that the parentheses around foo are superfluous, grouping has no benefits here.
[\s\S] is a much better workaround than (?:.|\s); see Erik Corry's answer to this question for the reason: stackoverflow.com/questions/2407870/…