JavaScript 用 <br /> 替换 \n

IT技术 javascript regex replace
2021-03-01 15:08:26
var messagetoSend = $.trim(document.getElementById("msgText").value);
messagetoSend = messagetoSend.replace("\n", "<br />");
alert(messagetoSend);

给定输入:

Line 1


Line 2




Line 3

这提醒:

Line 1<br />


Line 2




Line 3

当我期望它发出警报时:

Line 1<br /><br /><br />Line 2<br /><br /><br /><br /><br />Line 3
3个回答

您需要 /g 进行全局匹配

replace(/\n/g, "<br />");

这对我有用\n -如果您有,请参阅此答案\r\n

注意: dupe\r\n,\r\n

var messagetoSend = document.getElementById('x').value.replace(/\n/g, "<br />");
console.log(messagetoSend);
<textarea id="x" rows="9">
    Line 1
    
    
    Line 2
    
    
    
    
    Line 3
</textarea>

更新

似乎这个问题的一些访问者的文本与断裂线转义为

一些文本\r\n超过一行”

在这种情况下,您需要转义斜线:

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

注意:所有浏览器\r在渲染时都会忽略一个字符串。

那是换行符的文本表示。这是纯 JS 还是 php 中的字符串或类似的
2021-05-06 15:08:26
@mplungjan 我创建了一个名为ln2br. 然后 Copilot 在这个答案的开头建议了正则表达式 :))
2021-05-08 15:08:26
"g" 仍然只添加一个 <br /> 正则表达式不做任何事情
2021-05-11 15:08:26
不知道为什么,但对我replace(/\\n/g,"<br />")有用。我有点困惑。:/
2021-05-18 15:08:26
我改成这个了,好像不行。它不会取代任何东西。
2021-05-21 15:08:26

处理任一类型的换行符

str.replace(new RegExp('\r?\n','g'), '<br />');
这是最好的答案,非常感谢@WSKinner
2021-04-28 15:08:26
投票和选择的答案对我不起作用;我用过这个答案!谢谢。
2021-04-29 15:08:26
不处理\r\n
2021-05-02 15:08:26
这解决了整个问题,因为以前的问题以某种方式替换了我每一行的最后一个字符。
2021-05-08 15:08:26

.replace().使用正则表达式

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

如果这些换行符是由 windows 编码产生的,您还必须替换carriage return.

messagetoSend = messagetoSend.replace(/\r\n/g, "<br />");
它是 \n 而不是 \\n - 我认为我的回答已经解决了这个问题。\r 可以忽略 - 浏览器将
2021-04-21 15:08:26
我改成这个了,好像不行。它不会取代任何东西。
2021-05-06 15:08:26
@Tom:可能是 windows 换行符?我更新了代码,也尝试回车。
2021-05-08 15:08:26