Javascript替换新行字符

时间:2010-01-26 00:02:27

标签: 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>

以下代码:

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

function replaceAll(string, replaceString, replaceWith)
{
  return string.replace(new RegExp(replaceString, 'g'),replaceWith);
}

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

1 个答案:

答案 0 :(得分:9)

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

var out = in.replace(new RegExp("^>+", "mg"), "");

var out = in.replace(/^>+/mg, "");

m标志表示多行,因此^$将匹配行的开头和结尾,而不仅仅是字符串的开头和结尾。请参阅RegExp Object

编辑:值得一提的是,你应该可能赞成使用第二种形式的RegExp对象(正则表达式文字)。请参阅Are /regex/ Literals always RegExp Objects?Why RegExp with global flag in Javascript give wrong results?

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