代码之家  ›  专栏  ›  技术社区  ›  Gazler

javascript替换换行符

  •  3
  • Gazler  · 技术社区  · 15 年前

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

    <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);
    }
    

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

    1 回复  |  直到 15 年前
        1
  •  9
  •   Community CDub    7 年前

    如果你的目标只是把所有 > 在行首,这很容易做到:

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

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

    这个 m 标志表示多行,所以 ^ $ 将匹配行的开始和结束,而不仅仅是字符串的开始和结束。见 RegExp Object .

    编辑: 值得一提的是你应该 可能 赞成使用 RegExp 第二个窗体上的对象(regex-literal)。见 Are /regex/ Literals always RegExp Objects? Why RegExp with global flag in Javascript give wrong results? .

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