JavaScript用<br />替换\n

Tom*_*len 74 javascript regex replace

var messagetoSend = $.trim(document.getElementById("msgText").value);
messagetoSend = messagetoSend.replace("\n", "<br />");
alert(messagetoSend);
Run Code Online (Sandbox Code Playgroud)

给定输入:

Line 1


Line 2




Line 3
Run Code Online (Sandbox Code Playgroud)

这个提醒:

Line 1<br />


Line 2




Line 3
Run Code Online (Sandbox Code Playgroud)

当我希望它提醒时:

Line 1<br /><br /><br />Line 2<br /><br /><br /><br /><br />Line 3
Run Code Online (Sandbox Code Playgroud)

mpl*_*jan 164

你需要/ g进行全局匹配

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

这适合我

var messagetoSend = document.getElementById('x').value.replace(/\n/g, "<br />");
console.log(messagetoSend);
Run Code Online (Sandbox Code Playgroud)

UPDATE

似乎这个问题的一些访问者的文本与breaklines逃脱了

一些文字\ r \n超过一行"

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

\n

注意:\r\n渲染时,所有浏览器都会在字符串中忽略.

  • 不知道为什么,但对我来说 `replace(/\\n/g,"&lt;br /&gt;")` 有效。我有点困惑。:/ (2认同)

WSk*_*ner 76

处理任何类型的换行符

str.replace(new RegExp('\r?\n','g'), '<br />');
Run Code Online (Sandbox Code Playgroud)

  • 投票和选择的答案对我不起作用;我用过这个答案!谢谢。 (2认同)

jAn*_*ndy 8

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

messagetoSend = messagetoSend.replace(/\n/g, "<br />");
Run Code Online (Sandbox Code Playgroud)

如果这些换行符是由windows-encoding制作的,那么你还必须更换carriage return.

messagetoSend = messagetoSend.replace(/\r\n/g, "<br />");
Run Code Online (Sandbox Code Playgroud)