javascript multiline regexp替换

时间:2010-04-04 20:32:16

标签: javascript regex

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

您好。我无法理解为什么这段代码不会取代条形码上的foo

2 个答案:

答案 0 :(得分:25)

  

我无法理解为什么这段代码不会取代条形码上的foo

因为点.明确地匹配换行符。

这样可行:

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

因为换行符号计为空格(\s)。

请注意,foo周围的括号是多余的,分组在这里没有任何好处。

答案 1 :(得分:19)

JavaScript不支持dot-all修饰符。一个常见的替代品是:

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

/m使^$行为正确,但对.没有影响。