javascript multiline regexp替换

And*_*sov 25 javascript regex

"foo\r\nbar".replace(/(foo).+/m, "bar")
Run Code Online (Sandbox Code Playgroud)

你好.我无法理解为什么这段代码不会取代foo吧

Tom*_*lak 27

我无法理解为什么这段代码不会取代foo吧

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

这可行:

"foo\r\nbar".replace(/foo[\s\S]+/m, "bar")
Run Code Online (Sandbox Code Playgroud)

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

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

  • `[\ s\S]`是比`(?:.|\s)`更好的解决方法.请参阅Erik Corry对此问题的回答,原因如下:http://stackoverflow.com/questions/2407870/javascript-regex-hangs-using-v8 (6认同)

Kob*_*obi 19

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

"foo\r\nbar".replace(/(foo)[\s\S]+/, "bar")
Run Code Online (Sandbox Code Playgroud)

/m制作^$行为正确,但没有影响..