这让我发疯,我的格式是字符串:
<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;因为它们可能包含在该行的其他位置,所以我只想在开始时删除它们。我已经尝试了转义字符并硬编码正则表达式以显式删除新行,而不是将它们包含在函数调用中。任何帮助将不胜感激。
答案 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
对象。