替换两个字符串之间的多行文本

Replace multiline text between two strings

我需要使用 Javascript 正则表达式替换 foo{}bar 之间的 old 值。

foo{old}bar

如果 old 是单行,这有效:

replace(
    /(foo{).*(}bar)/,
    '' + 'new' + ''
)

我需要让它与以下设备一起使用:

foo{old value
which takes more
than one line}bar

我应该如何更改我的正则表达式?

将您的正则表达式更改为,

/(foo{)[^{}]*(}bar)/

/(foo{)[\s\S]*?(}bar)/

这样它也可以匹配换行符。 [^{}]* 匹配任何字符但不匹配 {},零次或多次。 [\s\S]*? 匹配任何 space 或非 space 字符,零次或多次非贪婪。