Javascript regexp替换换行符

时间:2014-03-24 17:47:43

标签: javascript regex

我有

return value.replace("\n","<br>")
            .replace("\r","<br>")
            .replace("<br><br>","<br>");

仅用

替换了\ n的第一次出现

我发现,要替换所有出现的内容,我应该将String替换为/String/g

所以我做了:

return value.replace("/\n/g","<br>")
            .replace("/\r/g","<br>")
            .replace("/<br><br>/g","<br>");

但似乎我错过了一些东西,因为什么都没有被替换。

3 个答案:

答案 0 :(得分:3)

删除正则表达式周围的双引号:

return value.replace(/\n/g,"<br>")
        .replace(/\r/g,"<br>")
        .replace(/<br><br>/g,"<br>");

答案 1 :(得分:1)

你应该删除引号。顺便说一下,你可以使用这个单一且简单的正则表达式。

使用此:

return value.replace(/\n|\r|<br><br>/g,"<br>");

答案 2 :(得分:1)

使用文字字符串时,请勿使用引号。这意味着您的代码变为:

return value.replace(/\n/g,"<br>")
            .replace(/\r/g,"<br>")
            .replace(/<br><br>/g,"<br>");

但是使用正则表达式,你可以通过使用字符类来缩短它。例如,如果value最初没有任何<br>,您可以使用:

return value.replace(/[\r\n]+/g, "<br>");

但如果您的初始代码从一开始就有<br>,那么您可以使用更像这样的内容:

return value.replace(/(?:[\r\n]|<br>)+/g, "<br>");

如果你想保持连续的换行符,也许可以使用明确的量词:

return value.replace(/[\r\n]{2}/g, "<br>");

return value.replace(/(?:[\r\n]|<br>){2}/g, "<br>");
相关问题