如何用<br />标签replacestring中的所有换行符?

我怎样才能从Javascript中读取换行符,并用br标签replace所有换行符?

例:

从PHP传递的variables如下所示:

  "This is man. Man like dog. Man like to drink. Man is the king." 

我想我的结果看起来像这样的Javascript转换后:

  "This is man<br /><br />Man like dog.<br />Man like to drink.<br /><br />Man is the king." 
 str = str.replace(/(?:\r\n|\r|\n)/g, '<br />'); 

如果你的担心只是显示换行符,你可以用CSS做到这一点。

HTML

 <div class="white-space-pre">Some test with linebreaks</div> 

CSS

 .white-space-pre { white-space: pre-wrap; } 

jsfiddle https://jsfiddle.net/yk1angkz/125/

注意 :注意代码的格式和缩进,因为white-space: pre-wrap会显示所有的空格(文本之后的最后一个换行符除外,参见小提琴)。

没有正则expression式:

 str = str.split("\n").join("<br />"); 

这适用于来自textarea的input

 str.replace(new RegExp('\r?\n','g'), '<br />'); 

如果接受的答案不适合你,那么你可以试试。

 str.replace(new RegExp('\n','g'), '<br />') 

它为我工作。

对其余的文本进行编码以防止可能的脚本注入攻击也很重要

 function insertTextWithLineBreaks(text, targetElement) { var textWithNormalizedLineBreaks = text.replace('\r\n', '\n'); var textParts = textWithNormalizedLineBreaks.split('\n'); for (var i = 0; i < textParts.length; i++) { targetElement.appendChild(document.createTextNode(textParts[i])); if (i < textParts.length - 1) { targetElement.appendChild(document.createElement('br')); } } } 

不pipe系统如何:

 my_multiline_text.replace(/$/mg,'<br>'); 

对于那些只想允许max 2在连续,你可以使用这个:

 let text = text.replace(/(\r?\n){2,}/g, '<br><br>'); text = text.replace(/(\r?\n)/g, '<br>'); 

第一行:search\n\r\n ,其中至less有两个连在一起,例如\n\n\n\n 。 然后用2 brreplace它

第二行:search所有单个\r\n\n并将其replace为<br>

当值来自TextBox时,这对我有用:

 string.replace(/\n|\r\n|\r/g, '<br/>'); 

如果你从PHP发送variables,你可以在发送之前用它获取它:

 $string=nl2br($string);