JavaScript replace \n with <br /> [duplicate]
var messagetoSend = $.trim(document.getElementById("msgText").value);
messagetoSend = messagetoSend.replace("\n", "<br />");
alert(messagetoSend);开发者_运维知识库
Given input:
Line 1
Line 2
Line 3
This alerts:
Line 1<br />
Line 2
Line 3
When I expect it to alert:
Line 1<br /><br /><br />Line 2<br /><br /><br /><br /><br />Line 3
You need the /g for global matching
replace(/\n/g, "<br />");
This works for me for \n
- see this answer if you might have \r\n
NOTE: The dupe is the most complete answer for any combination of \r\n
, \r
or \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>
UPDATE
It seems some visitors of this question have text with the breaklines escaped as
some text\r\nover more than one line"
In that case you need to escape the slashes:
replace(/\\r\\n/g, "<br />");
NOTE: All browsers will ignore \r
in a string when rendering.
Handles either type of line break
str.replace(new RegExp('\r?\n','g'), '<br />');
Use a regular expression for .replace()
.:
messagetoSend = messagetoSend.replace(/\n/g, "<br />");
If those linebreaks were made by windows-encoding, you will also have to replace the carriage return
.
messagetoSend = messagetoSend.replace(/\r\n/g, "<br />");
精彩评论