regexp替换换行符

Javascript regexp replace newline

本文关键字:换行符 替换 regexp      更新时间:2023-09-26

我有

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

仅用

替换'n的第一个出现

我发现,要替换所有的出现,我应该用/String/g替换String

所以我做了:

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

但似乎我错过了什么,因为没有什么被替换。

去掉正则表达式周围的双引号:

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

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

使用

:

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

使用字面值字符串时,不要使用引号。这意味着你的代码变成:

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

但是使用regex,你实际上可以通过使用字符类使它更短。例如,如果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>");