今天偶然发现了这个小怪,有人能解释一下吗?
x = 'a \\n b';
x.replace(/\\n/g, '<br>'); // => "a <br> b"
x.replace(RegExp('\\n', 'g'), '<br>'); // => "a \\n b"
x.replace(RegExp('\\n', 'gm'), '<br>'); // => "a <br> b"
我假设/\\n/g
并且RegExp('\\n', 'g')
将是等效的,但事实并非如此。在什么情况下使用一种方法而不是另一种方法会产生不同的结果?
为什么需要多行标志,并且仅在使用 RegExp 对象时才需要?
编辑:第三次替换是我被斗鸡眼了,也就是说x.replace(RegExp( '\\n', 'gm'), '<br>'); // => "a \\n b"