Javascript替换新行字符

Gaz*_*ler 3 javascript regex

这让我发疯,我有一个格式的字符串:

<br />
twice<br />
imap Test wrote:<div class="nestedMessage1"><br />
> nested<br />
><br />
> imap@gazler.com wrote:<div class="nestedMessage2"><br />
>> test<br />
>><br />
>> -- <br />
>> Message sent via AHEM.<br />
>>   </div><br />
><br /><br /></div>
Run Code Online (Sandbox Code Playgroud)

以下代码:

string = string.replace(/\n/g, "");
string = replaceAll(string, "<br />>", "<br />");

function replaceAll(string, replaceString, replaceWith)
{
  return string.replace(new RegExp(replaceString, 'g'),replaceWith);
}
Run Code Online (Sandbox Code Playgroud)

我试图做的是删除<br />>并将其替换为<br />我不能简单地替换所有出现的>因为它们可能包含在行的其他地方,所以我只想删除他们一开始.我已经尝试了转义字符并硬编码正则表达式以显式删除新行,而不是将它们包含在函数调用中.任何帮助,将不胜感激.

cle*_*tus 9

如果你的目标只是删除>行开头的所有s,那很容易做到:

var out = in.replace(new RegExp("^>+", "mg"), "");
Run Code Online (Sandbox Code Playgroud)

要么

var out = in.replace(/^>+/mg, "");
Run Code Online (Sandbox Code Playgroud)

m标志意味着多行,以便^$匹配行的开头和结尾,而不是仅仅是个开始和结束的字符串.请参见RegExp对象.

编辑:值得一提的是,你应该很可能使用的青睐RegExp对象在第二形式(正则表达式文字).请参阅Are/regex/Literals总是RegExp对象?为什么正则表达式在JavaScript中全局标志给出错误的结果吗?.

此外,在多次使用的正则表达式文字中如何处理全局标志存在浏览器差异.最好避免使用并明确使用RegExp对象.