Подтвердить что ты не робот

Javascript multiline regexp replace

"foo\r\nbar".replace(/(foo).+/m, "bar")

Здравствуйте. Я не могу понять, почему этот код не заменяет foo на bar

4b9b3361

Ответ 1

Я не могу понять, почему этот код не заменяет foo на bar

Поскольку точка . явно не соответствует символам новой строки.

Это будет работать:

"foo\r\nbar".replace(/foo[\s\S]+/m, "bar")

потому что символы новой строки считаются пробелами (\s).

Обратите внимание, что круглые скобки вокруг foo являются излишними, группировка здесь не имеет преимуществ.

Ответ 2

JavaScript не поддерживает модификатор dot-all. Обычная замена:

"foo\r\nbar".replace(/(foo)[\s\S]+/, "bar")

/m делает ^ и $ вести себя корректно, но не влияет на ..